refcursor를 사용 하는 동적 SELECT 쿼리 가 생성 된 후 실행 된 이전 사례에 계속해서 -다음 질문을하고 싶습니다. 표시된 프로 시저에서 얻은 원하는 출력이 DataOutput에 출력되었습니다. db의 새 테이블에 데이터를 저장하는 방법을 찾고 싶습니다.
간단한 명령 대신 :
CREATE TABLE mydaughtertable AS
SELECT enrich_d_dkj_p_k27ac,enrich_lr_dkj_p_k27ac,enrich_r_dkj_p_k27ac
FROM dkj_p_k27ac
아이디어는 다음과 같이 실행하는 것입니다.
CREATE TABLE mydaughtertable AS myresult('dkj_p_k27ac','enri')
그러나이 스크립팅은 올바르지 않으며 다음과 같은 오류가 발생합니다.
ERROR: syntax error at or near "myresult" LINE 1: CREATE TABLE mydaughtertable AS myresult('dkj_p_k27ac','enri... ^ ********** Error ********** ERROR: syntax error at or near "myresult" SQL state: 42601 Character: 33
여기에서는 동적 반환 유형에 문제가 발생하지 않기 때문에 이전 질문보다 더 쉽게 해결됩니다. 에 전달하기 전에 쿼리 문자열을 올바르게 연결하기 만하면됩니다 EXECUTE
.
A의 새 테이블 :
DO
$$
BEGIN
EXECUTE 'CREATE TABLE mydaughtertable AS ' || myresult('dkj_p_k27ac','enri');
END
$$;
어디에서 myresult(...)
유효한의 텍스트 반환 SELECT
문을.
기존 테이블에 추가하려면 :
...
EXECUTE 'INSERT INTO TABLE mydaughtertable(<colum list>) '
|| myresult('dkj_p_k27ac','enri');
...
쿼리의 결과 유형이 테이블과 일치하는 것을 알고 있는 경우 대상 컬럼 목록을 생략 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다