第8章 函数和过程
8.4、过程(2019-06-15) 1、存储过程向两张表中添加数据-- 第一张表是avator表
CREATE TABLE avatar(
avatar_id NUMBER GENERATED AS IDENTITY CONSTRAINT avatar_kp PRIMARY KEY,--主键约束
avatar_name VARCHAR2(30)
);
-- 第二张表是episode表
CREATE TABLE episode(
episode_id NUMBER GENERATED AS IDENTITY CONSTRAINT episode_pk PRIMARY KEY,avatar_id NUMBER CONSTRAINT episode_nnl NOT NULL,--NOT NULL约束
episode_name VARCHAR2(30),CONSTRAINT episode_fkl FOREIGN KEY(avatar_id) REFERENCES avatar(avatar_id)--外键约束
);
--adding_contact过程显示了如何使用按值传递过程跨单个事务作用域管理多个DML语句:
CREATE OR REPLACE PROCEDURE adding_avatar(pv_avatar_name VARCHAR2,pv_episode_name VARCHAR2) IS
lv_avatar_id NUMBER;
BEGIN
SAVEPOINT all_or_none;--事务开始点
INSERT INTO avatar(avatar_name)VALUES(pv_avatar_name)RETURNING avatar_id INTO lv_avatar_id;--RETURNING INTO子句将标识列的值返回给局部变量
INSERT INTO episode(avatar_id,episode_name)VALUES(lv_avatar_id,pv_episode_name);--使用lv_avatar_id局部变量作为外键值
COMMIT;--提交
EXCEPTION--异常
WHEN OTHERS THEN
ROLLBACK TO all_or_none;--回滚可能已经发生的事务
END;
/
--匿名块程序测试过程
BEGIN
adding_avatar(‘Airbender‘,‘Episode 1‘);
END;
/
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|