Это моя хранимая процедура:Как получить доступ к параметрам внутри хранимой процедуры 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;"
псевдонима является единственным способом я нашел в Интернете, чтобы сделать это, но я получаю следующее сообщение об ошибке:
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 (выберите t1, t2, t3, p1, p2, p3 из ABC..PQR limit 10); где t1, t2, t3 исходят из переданных параметров, а p1, p2 и p3 исходят из таблицы PQR. – Macopare
Вы передаете строки, которые нужно вставить, или имена столбцов в процедуру? –
Существуют ли t1, t2 и t3, предназначенные для вставки буквенных значений, в то время как p1, p2 и p3 предназначены для вставки того, что находится в столбцах PQR? Динамическое SQL-решение Джереми должно работать на вас, хотя вы можете использовать quote_ident или quote_literal в зависимости от ваших намерений. – ScottMcG