我正在编写一个Netezza过程,并试图用一个变量写入一个insert子句。但是Netezza似乎不允许这样做,因为我遇到了一个错误:
‘'INSERT到pkcount选择count(*) sk从$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;发布于 2016-12-16 18:26:36
您需要创建动态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通知。
https://stackoverflow.com/questions/41188415
复制相似问题