当前位置: 代码迷 >> DB2 >> 在aix上能通过quest或rapid等客户端直接创建存储过程吗?该怎么解决
  详细解决方案

在aix上能通过quest或rapid等客户端直接创建存储过程吗?该怎么解决

热度:9425   发布时间:2013-02-26 00:00:00.0
在aix上能通过quest或rapid等客户端直接创建存储过程吗???
CREATE   PROCEDURE   CRNS.SP_tmpTable()
SPECIFIC   SP_tmpTable
LANGUAGE   sql
BEGIN
        declare   SQLCODE     integer   default   0;  
   
END
在window版本的db2上可以,但在aix上报错:SQLSTATE   42904:   由于编译错误,未创建   SQL   过程。

我是用quest   central上运行的,难道aix版本的db2只能通过c或编译器才可以创建存储过程吗?????


------解决方案--------------------------------------------------------
存储过程中的SQL语句是要求用分号“;”作结束符的,但用工具或者db2 -tvf命令执行SQL时,都是把分号作为SQL的分隔,在你执行上面的定义存储过程的语句时,工具把你的定义语句分成两部分执行了:
1、
CREATE PROCEDURE CRNS.SP_tmpTable()
SPECIFIC SP_tmpTable
LANGUAGE sql
BEGIN
declare SQLCODE integer default 0;
2、
END

把这个语句放在SHELL里面(注意存储过程的定义语句,放在双引号中间),执行这个SHELL:
db2 connect to db_name
db2 "CREATE PROCEDURE CRNS.SP_tmpTable()
SPECIFIC SP_tmpTable
LANGUAGE sql
BEGIN
declare SQLCODE integer default 0;
END "