首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标识符中的Netezza变量

标识符中的Netezza变量
EN

Stack Overflow用户
提问于 2016-12-16 16:15:42
回答 1查看 1.6K关注 0票数 0

我正在编写一个Netezza过程,并试图用一个变量写入一个insert子句。但是Netezza似乎不允许这样做,因为我遇到了一个错误:

‘'INSERT到pkcount选择count(*) sk从$1’错误^找到"$1“(在char 53处),希望找到一个标识符找到一个关键字

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-16 18:26:36

您需要创建动态sql,以便将变量作为查询的一部分。

下面的proc应该能工作

代码语言:javascript
复制
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通知。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41188415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档