3

私はpostgresが初めてで、次の動的クエリを実行しています

EXECUTE 'Select * from products';

次の応答が得られます。

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

私はこれが私が欠けている基本的なものになることを知っています

4

2 に答える 2

3

plpgsqlEXECUTEステートメントがあります。これは、実行しようとしていることを実行します-SQLクエリ文字列を実行します。にタグを付けたので、これが探しているものかもしれません。

plpgsql 関数またはDOステートメント (匿名コード ブロック) 内でのみ機能します。細かいマニュアルで明確にされたの区別EXECUTESQL-EXECUTE:

注: PL/pgSQLステートメントは、PostgreSQL サーバーがサポートする SQL ステートメントEXECUTEとは関係ありません。EXECUTEサーバーのEXECUTE ステートメントは、PL/pgSQL 関数内で直接使用することはできません (必要ありません)。

SELECT例が示すように動的クエリから値を返したい場合は、関数を作成する必要があります。DOステートメントは常に を返しvoidます。非常に細かいマニュアルの関数から値を返すことについての詳細。

于 2012-05-22T21:35:10.320 に答える
2

細かいマニュアルから:

あらすじ

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

説明

EXECUTE以前に準備されたステートメントを実行するために使用されます。

そのEXECUTEため、SQL の文字列を実行するのではなく、名前で識別される準備済みステートメントを実行し、PREPAREを使用してステートメントを個別に準備する必要があります。

=> prepare stmt as select * from products;
=> execute stmt;
-- "select * from products" output goes here...
于 2012-05-22T20:49:34.463 に答える