在下面的存储过程中,我只想创建一个基于参数值的列别名。看起来很简单,但我找不到答案。
CREATE OR REPLACE PROCEDURE "SP"(INTEGER, INTEGER)
RETURNS INTEGER
EXECUTE AS OWNER
LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
whichyear ALIAS FOR $1;
BEGIN
Select x as "Some Text" + whichyear from some table...
;
END;
END_PROC;发布于 2015-08-31 21:59:14
选项卡是正确的,这将需要动态SQL在Netezza。下面是一个例子。
CREATE OR REPLACE PROCEDURE "SP"(INTEGER)
RETURNS INTEGER
EXECUTE AS OWNER
LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
whichyear ALIAS FOR $1;
vSQL varchar(30000);
BEGIN
drop table the_results if exists;
vSQL := 'CREATE TABLE THE_RESULTS AS SELECT COL1 "SOME TEXT ' || whichyear || '" FROM TABLE_A;';
execute immediate vSQL;
END;
END_PROC;这是输出。
TESTDB.ADMIN(ADMIN)=> exec SP(5);
SP
----
(1 row)
TESTDB.ADMIN(ADMIN)=> select * from the_results;
SOME TEXT 5
-------------
2
3
1
(3 rows)发布于 2015-08-31 20:04:44
在Server中,可以使用如下所示的动态SQL:
DECLARE @sql varchar(max) = 'Select x as SomeText' + @whichyear + ' from sometable';
EXEC(@sql);https://stackoverflow.com/questions/32317576
复制相似问题