2012-05-22 2 views
1

은 내가 응답동적 쿼리는

EXECUTE 'Select * from products'; 

다음 얻을 동적 쿼리 다음 포스트 그레스와 실행에 새로운 오전 POSTGRES.

ERROR: syntax error at or near "'Select * from products'" 
LINE 1: EXECUTE 'Select * from products'; 

나는이 내가 fine manual에서

답변

1

을 실종 기본 일 것 알고 :

시놉시스를

EXECUTE name [ (parameter [, ...]) ] 

설명

EXECUTE은 이전에 준비된 명령문을 실행하는 데 사용됩니다.

그래서 EXECUTE는 이름으로 식별되는 준비된 문을 실행, SQL 문자열을 실행하지 않고 당신은 PREPARE를 사용하여 개별적으로 문을 준비해야합니다

=> prepare stmt as select * from products; 
=> execute stmt; 
-- "select * from products" output goes here... 
2

EXECUTE있다 문을 plpgsql, 당신이하려고하는 것입니다 - SQL 쿼리 문자열을 실행합니다. 이라는 태그가 지정되어 있으므로 원하는 내용을 찾을 수 있습니다.

plpgsql 함수 또는 DO 문 (익명 코드 블록)에서만 작동합니다. The distinction between EXECUTE and SQL-EXECUTE made clear in the fine manual :

참고 : PL/pgSQL의 EXECUTE 문은 PostgreSQL 서버가 지원하는 EXECUTE SQL 문 관련이 없습니다. 서버의 EXECUTE 문은 PL/pgSQL 함수 내에서 직접 사용할 수 없으며 ( 은 필요하지 않습니다).

예를 들어 동적 예제 SELECT 쿼리에서 값을 반환하려면 함수를 만들어야합니다. DO 문은 항상 void을 반환합니다. More about returning values from a function in the very fine manual.