读书人

在aix上能通过quest或rapid等客户端直

发布时间: 2012-02-17 17:50:42 作者: rapoo

在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 "

读书人网 >IBM DB2

热点推荐