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 "