我正在编写Netezza过程并尝试在FROM子句中编写带变量的插入。但是当我得到一个错误时,Netezza似乎不允许这样做:
' INSERT INTO pkcount SELECT count(*)sk FROM $ 1' 错误^找到" $ 1" (在char 53处)期望标识符找到关键字
CREATE OR REPLACE PROCEDURE check_tbl (varchar(255))
RETURNS integer
LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
tbl_name ALIAS FOR $1;
BEGIN
CREATE TEMP TABLE pkcount (sk bigint);
INSERT INTO pkcount
SELECT count(*) sk FROM tbl_name;
END;
END_PROC;
答案 0 :(得分:1)
您需要创建动态sql才能将变量作为查询的一部分包含在内
proc下面应该有效
CREATE OR REPLACE PROCEDURE check_tbl (varchar(255))
RETURNS integer
LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
tbl_name ALIAS FOR $1;
sql char(1000);
BEGIN
CREATE TEMP TABLE pkcount (sk bigint);
sql := 'INSERT INTO pkcount SELECT count(*) sk FROM '||tbl_name;
execute immediate sql;
RAISE NOTICE 'SQL Statement: %', sql;
END;
END_PROC;
以防你想检查sql语句,以便添加RAISE NOTICE。