如何在DB2中编写存储过程
请帮助我在Db2中编写存储过程如何在DB2中编写存储过程,db2,Db2,请帮助我在Db2中编写存储过程 CREATE PROCEDURE assedt BEGIN SELECT ASSETNUM FROM ASSET END 我尝试了上面的代码,它抛出了如下错误: 错误报告- DB2SQL错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=selectassetnum;程序p1 开始 ,;,驾驶员=4.12.55 似乎在“P1”之后缺少一个冒号。它应该是“P1:” 检查一下这个示例下面的红皮书:,是为DB2forIBMi(不是
CREATE PROCEDURE assedt
BEGIN
SELECT ASSETNUM FROM ASSET
END
我尝试了上面的代码,它抛出了如下错误:
错误报告-
DB2SQL错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=selectassetnum;程序p1
开始
,;,驾驶员=4.12.55
似乎在“P1”之后缺少一个冒号。它应该是“P1:” 检查一下这个示例下面的红皮书:,是为DB2forIBMi(不是zOS,不是LUW)编写的,但是第2章是对Db2过程SQL的一个很好的介绍,它适用于其他Db2。我希望这能有所帮助。示例:
create table test_table (numcol integer);
insert into test_table values (1);
CREATE OR REPLACE procedure assedt (out out_var integer)
language sql
p1: begin
declare l_var integer;
select max(numcol) into l_var from test_table;
set out_var = l_var + 1;
end p1;
begin
declare g_var integer;
call assedt( g_var );
insert into test_table values (g_var);
end;
select * from test_table;
解释,根据G_V的建议:这个过程有点像您的原始过程,从test_表中获取一个max值,增加它,并在out参数中返回它(a-la Oracle的nextval()。过程之后的匿名块执行proc,获取新的最大值,然后将其插入到proc外部的test_表中。这为您提供了存储代码和匿名代码之间交互的透视图,以及如何传递值和参数。希望这能有所帮助。当链接过时时,只有链接的答案才会变得无用;请考虑在你的答案中从你的链接中加上要点。对不起,我不明白你的意思。我尝试了链接,它打开正确。不管怎样,我编辑了答案,改变了链接。请考虑阅读感谢“MuStusio”。我明白你的意思,下次我会考虑的。考虑到所提供的问题,我认为用户可能会从参考书中获益,这本书在IBM I(iSeries或AS/400)世界之外并不为人所知,但在第二章中有一个非常容易理解的过程性Db2解释,这在其他Db2平台上也是有效的。可能重复的是,虽然您发布了一个实用的示例,但一些关于它的功能或原因的解释会很好。