在这个示例中,我们将在DB2中创建一个名为DEMO1201的存储过程。
该存储过程的输入参数IN_NAME和IN_CREDITCARD,表示用户的姓名和身份证号。
该存储过程的作用是根据身份证号来新建用户或者更改用户信息,代码如下:
CREATE OR REPLACE PROCEDURE DEMO1201 (
IN IN_NAME VARCHAR(50),
IN IN_CREDITCARD CHARACTER(18)
)
BEGIN
DECLARE V_RESULT VARCHAR(50) DEFAULT NULL;
SELECT NAME INTO V_RESULT FROM USERS WHERE CREDITCARD=IN_CREDITCARD;
IF (V_RESULT IS NOT NULL) THEN
UPDATE USERS SET NAME=IN_NAME WHERE CREDITCARD=IN_CREDITCARD;
ELSE
INSERT INTO USERS VALUES(IN_NAME,IN_CREDITCARD);
END IF;
END
创建完该存储过程后,我们来新建一个USERS表并调用存储过程:
DROP TABLE USERS;
CREATE TABLE USERS (
NAME VARCHAR(50),
CREDITCARD CHARACTER(18)
);
INSERT INTO USERS VALUES ('刘德华','123456789123456789');
INSERT INTO USERS VALUES ('周杰伦','123456789987654321');
CALL DEMO1201('周星驰','123456789987654321');
我们新建了两个用户,并调用了存储过程DEMO1201,此时我们执行SELECT操作:
SELECT * FROM USERS;
结果如下:
NAME CREDITCARD
-------------------------------------------------- ------------------
刘德华 123456789123456789
周星驰 123456789987654321
可以看到,CREDITCARD为“123456789987654321”的用户的姓名已经变更成了“周星驰”。