0
誰かが私に次のコードの問題点を指摘できますか? それは完全に合法構文のように見えますが、私はそれを実行したときに私が手:更新から変数を設定しようとしても動作しません
ERROR: syntax error at or near "conctest"
LINE 7: ret_id := (update conctest set id=id+1 where name = 'Billy ...
^
********** Error **********
ERROR: syntax error at or near "conctest"
SQL state: 42601
Character: 66
ブロークン・コード:
DO $$
declare ret_id integer;
begin
ret_id := (update conctest set id=id+1 where name = 'Billy Bob' returning id);
DROP TABLE IF EXISTS tmpTable;
CREATE TEMPORARY TABLE tmpTable AS
select ret_id;
END $$;
select * from tmpTable;
これは動作します:
DO $$
declare ret_id integer;
begin
update conctest set id = id + 1 where name = 'Billy Bob';
ret_id := (select id from conctest where name = 'Billy Bob');
DROP TABLE IF EXISTS tmpTable;
CREATE TEMPORARY TABLE tmpTable AS
select ret_id;
END $$;
select * from tmpTable;
ところでを、私はアップデートをコピー句を作業SQLクエリウィンドウから取得し、手動で" returning id"
を追加して、そこに奇妙な文字がないようにします。 どうしたの?
TVMIA
アダム。 docsあたりとして
おかげで、バオ - 作品。私はhttps://www.postgresql.org/docs/current/static/sql-update.htmlでこの構文を見ることができません。私はそれが "output_expression"の下に含意されていると思うけど、まだまだ秘密です。あなたがそれを知らないなら、あなたはクリークの上にいます。 –
fair point - 必要なドキュメントへのリンクを追加しました。変数に値を代入するのはplpgsqlの部分で、リンクはSQLの更新コマンドです –