問題: PostgreSQLスクリプトで、データベース内の同じ項目に関連するデータを削除する行がたくさんあります。例:select文とdelete文のPostgreSQL変数
delete from <table> where <column>=180;
delete from <anothertable> where <column>=180;
...
delete from <table> where <column>=180;
commit work;
<column>=180
を参照するデータを削除する約15の削除文があります。
180
を変数に置き換えようとしました。コード内のすべての行ではなく変数を変更するだけです(良いプログラマのように)。私はそれをする方法を理解するように見えない、それは働いていない。
注:私は非常に多くのSQLの初心者(私はめったにそれを使用しない)していますので、私はこれを行うには良い方法はおそらくあります知っているが、私はこの問題を解決することができますどのように私を啓発してください。
私はこれらの答えを運のない状態で試して修正するために使用しました:firstsecondthird私はthe official PostgreSQL documentationに行ったこともあり、運はありません。
これは私が(これらの行は、ちょうど実際のスクリプトでのテストではなくするためのものである)しようとしているものです:
DO $$
DECLARE
variable INTEGER:
BEGIN
variable := 101;
SELECT * FROM <table> WHERE <column> = variable;
END $$;
私もちょうどこのようにそれをdelcaring試してみた:
DECLARE variable INTEGER := 101;
私はこれは私が取得エラーである変数に数字の1を交換した後、スクリプトを実行するたびに:
SQL Error [42601]: ERROR: query has no destination for result data
Hint: If you want to discard the results of a SELECT, use PERFORM instead.
Where: PL/pgSQL function inline_code_block line 6 at SQL statement
カルシウム誰かが私がどこに間違っているのか教えてくれる?スクリプト内のすべての行ではなく変数内の数値を変更するだけでいいのですが、私はそれを理解できないようです。
を使用すると、変数に選択することができますが、同じように、それは結果のための先を持っていない、を選択し、そう 'perform'を使用するか、暗黙の変数assingmentとして選択結果を使用するかすることはできません、たとえば、 '情報を生成する '%'、(select * from where = variable);'(複数の行が返された場合には再び動作しません... –