首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

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

2012-02-17 
在aix上能通过quest或rapid等客户端直接创建存储过程吗???CREATEPROCEDURECRNS.SP_tmpTable()SPECIFICSP_t

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

热点排行