DB2存储过程简单例子

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DB2存储过程简单例子

客户在进行短信服务这个业务申请时,需要填写一些基本信息,然后根据这些信息判断这个用户是否已经存在于业务系统中。因为网上服务和业务系统两个项目物理隔离,而且网上数据库保存的客户信息不全,所以判断需要把数据交换到业务系统,在业务系统中判断。

解决方式是通过存储过程,以前也了解过存储过程,但没使用到项目中。不过经过一番努力最后还是完成了,期间遇到了一些困难,特写此文让对DB2存储过程还不熟悉的童鞋避免一些无谓的错误。

DROP PROCEDURE "PLName"

@

CREATE PROCEDURE "PLName"(--存储过程名字

IN IN_ID BIGINT , --以下全是输入参数

IN IN_ENTNAME VARCHAR(200) ,

IN IN_REGNO VARCHAR(50),

IN IN_PASSWORD VARCHAR(20),

IN IN_LEREP VARCHAR(300),

IN IN_CERTYPE CHARACTER(1),

IN IN_CERNO VARCHAR(50),

IN IN_LINKMAN VARCHAR(50),

IN IN_SEX CHARACTER(1),

IN IN_MOBTEL VARCHAR(30),

IN IN_REQDATE TIMESTAMP,

IN IN_REMITEM VARCHAR(300),

IN IN_STATE CHARACTER(1),

IN IN_TIMESTAMP TIMESTAMP

)

BEGIN

declare V_RESULT BIGINT; --声明变量

DELETE FROM TableNameA WHERE ID = IN_ID;

SET V_RESULT =NULL; --为变量赋值

--检查用户输入的信息是否合法

select b.id INTO V_RESULT from TableNameB b,TableNameC c where正常的判断条件

if(V_RESULT IS NOT NULL) then---如果合法,执行下面的insert语句

INSERT INTO

TableNameA(ID,ENTNAME,REGNO,PASSWORD,LEREP,CERTYPE,CERNO,LINKMAN,SEX,MOBT EL,REQDATE,REMITEM,STATE,TIMESTAMP)

VALUES(IN_ID,IN_ENTNAME,IN_REGNO,IN_PASSWORD,IN_LEREP,IN_CERTYPE,IN_CERNO ,IN_LINKMAN,IN_SEX,IN_MOBTEL,IN_REQDATE,IN_REMITEM,IN_STATE,IN_TIMESTAMP);

end if;

commit;

END

@

功能说明:

调用存储过程时会传入一些值(IN输入参数),然后根据传入的值查询数据库(select 语句),根据查询结果执行操作(添加、删除、更新)

有两种方式执行写好的存储过程:

1.拷贝到DB2客户端工具中直接执行

特别注意:执行时将

改成@,之前很多错误都和它有关,比如:“该命令被当作 SQL

语句来处理,因为它不是有效的命令行处理器命令”正是这个问题花费了很长时间,严重影响心情

2.将上面的语句保存为test.db2文件放到任意目录下(比如D盘根目录),然后在cmd 输入db2cmd 然后输入db2 -td@ -vf D:\test.db2即可

执行后就可以测试存储过程写的是否正确

直接写sql:

call PLName(存储过程名字)

(IN_ID,IN_ENTNAME,IN_REGNO,IN_PASSWORD,IN_LEREP,IN_CERTYPE,IN_CERNO,IN_LI NKMAN,IN_SEX,IN_MOBTEL,IN_REQDATE,IN_REMITEM,IN_STATE,IN_TIMESTAMP对应的值)

以上就是我今天所用到的存储过程,功能非常简单,比较复杂的操作也在摸索阶段,有什么疑问大家可以随时交流。

相关文档
最新文档