IBM DB2,以ALIAS作为参数的存储过程

时间:2016-10-27 10:14:43

标签: sql db2 alias ibm-midrange

我在(AS / 400,iSeries,PowerI或其他)盒子上。 我正在尝试开发一个存储过程,为数据库成员创建一个ALIAS,将该别名用于select into,最后删除别名。

我正在调整SQL错误代码SQL0204(即找不到文件或成员),然后调用该过程。

sql参考手册中有一条说明:

  

如果指定了成员,则别名不能在大多数SQL模式中使用   声明。它可以用于CREATE PROCEDURE,CREATE FUNCTION和in   带有as-result-table子句的CREATE TABLE

我不明白“as-result-table”的含义,或者如何编码。

我的代码是这样的:

create procedure targetlib/check_sql                             
( IN MEMBERNAME CHAR(10))                                       
LANGUAGE SQL                                                  
DETERMINISTIC                                                 
MODIFIES SQL DATA                                             
BEGIN                                                         
  Create ALIAS targetlib/table544 for targetfile( MEMBERNAME );
  INSERT INTO targetlib/receiver (                             
    SELECT * FROM targetlib/table544                             
    WHERE field1='SOMETHING' AND field2 = 'ELSE'                       
  );                                                          
    DROP ALIAS targetlib/table544;                               
END;

解决:它必须是完全动态的sql,否则它将无法正常工作。 如果我这样编码(我不能使用||进行连接):

set sql_string = CONCAT('create alias targetlib/table544 for targetfile(', CONCAT(MEMBER, ')'));  
PREPARE S1 from sql_string;
execute S1;

我的作品。感谢Gordon Linoff指出正确方向的人。{/ p>

0 个答案:

没有答案