2014-04-03 5 views
0

필자는 plpgsql 함수를 사용하여 execute 문을 생성하고이를 테이블로 실행하려고합니다. EXECUTE ... INTO table_name 표준이 작동하지 않아 대안을 찾고있었습니다. 기본적으로 select 문은 테이블에 저장하려는 세 개의 열을 반환합니다.PL/pgSQL INSERT INTO 테이블

다음은 실행의 몇 가지 예제 코드입니다 : 이상적으로

query = 'SELECT name, work, phone FROM info WHERE name = ' 
     || quote_literal(inName) || ' ORDER BY phone'; 

, 난 그냥 난 그냥 TABLENAME에 SELECT를 넣어 것입니다 쿼리 나 자신을 실행했다,하지만이 실행 작동하지 않은 경우.

아이디어가 있으십니까? 그것에 대해

+0

"* 테이블로 실행 *"전혀 의미가 없습니다 –

+0

테이블을 선택할 수 있습니다. 왜 실행하지 않습니까? : O – KiaShakiba

답변

1

사용 CREATE TABLE AS :

EXECUTE 'CREATE TABLE foo AS 
    SELECT name, work, phone 
    FROM info WHERE name = ' || quote_literal(in_name) || ' ORDER BY phone'; 

SELECT INTO가 그 목적을 위해 권장되지는 :
Combine two tables into a new one so that select rows from the other one are ignored

SELECT/EXECUTE .. INTO ..은하지 plpgsql에서 전체 테이블에 대한 단일 행을위한 것입니다.

그리고 plpgsql의 대입 연산자는 =이 아니라 :=입니다.
작은 따옴표가 없습니다.
그리고 인용 부호가없는 대소 문자가 혼합 된 대소 문자를 Postgres에 사용하지 마십시오.

+0

그랬어! 고맙습니다! – KiaShakiba