如何在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(不是

请帮助我在Db2中编写存储过程

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平台上也是有效的。可能重复的是,虽然您发布了一个实用的示例,但一些关于它的功能或原因的解释会很好。