これは私のストアドプロシージャです:Netezzaストアドプロシージャ内のパラメータにアクセスする方法は?
nzsql -u user -pw pass -c "CREATE OR REPLACE PROCEDURE INSERT_LOGIC(varchar(50),varchar(20),varchar(40)) RETURNS BOOL LANGUAGE NZPLSQL AS BEGIN_PROC
DECLARE
t1 ALIAS FOR $1;
t2 ALIAS FOR $2;
t3 ALIAS FOR $3;
BEGIN
INSERT INTO ABC..XYZ
(select '$t1','$t2','$t3' from ABC..PQR limit 10);
END;
END_PROC;"
ALIAS FORこれを行うために、私はインターネット上で見つけた唯一の方法ですが、私は次のエラーを取得:私は3にアクセスするにはどうすればよい
NOTICE: plpgsql: ERROR during compile of INSERT_LOGIC near line 3
ERROR: syntax error, unexpected ERROR, expecting VARIABLE or WORD at or near "t1Stuff"
を私が同じ内部のストアドプロシージャに渡す "varchar変数"?
まだ動作しません。問題は、挿入するためにselectステートメントを使用する必要があることです。私はそれが働くことを知っている.. INSERT INTO ABC..XYZ VALUES(t1、t2、t3)。しかし、私は実際にselect文を使う必要があります。なぜなら、実際の挿入は、INSERT INTO ABC..XYZ (ABC..PQR limit 10からt1、t2、t3、p1、p2、p3を選択します)です。ここで、t1、t2、t3は渡されたパラメータに由来し、p1、p2およびp3はテーブルPQRに由来する。 – Macopare
プロシージャに挿入する文字列や列名を渡していますか? –
p1、p2、p3はすべてPQRの列にあるものを挿入する意味で、t1、t2、t3はすべてリテラル値を挿入するものですか?あなたの意図に応じてquote_identまたはquote_literalを使用することもできますが、Jeremyの動的SQLソリューションが有効です。 – ScottMcG