【3-16】数据库基本编程语句,存储过程,触发器

一基本编程语句

(1)定义变量  declare @变量名 数据类型 

(2)赋值 set @变量名=值 

             select @变量名 =值

(3)取值打印  print @变量名

                    select  @变量名

例:【3-16】数据库基本编程语句,存储过程,触发器

【3-16】数据库基本编程语句,存储过程,触发器

注:print 打印在消息框中

(4)分支语句

if 条件

begin

条件语句

end

else

begin

条件语句

end

例:【3-16】数据库基本编程语句,存储过程,触发器

(5)循环语句

初始条件

while 循环条件

begin

循环体

end

例:【3-16】数据库基本编程语句,存储过程,触发器

二 存储过程

create proc 存储名

参数  数据类型

as

 return  值

调用 exec 

例:

【3-16】数据库基本编程语句,存储过程,触发器

三、触发器

create  or alter trigger 别名

on 触发的表名

for 触发的动作    或 instead of 触发的动作 或 after 触发的动作

as 触发的内容

例:【3-16】数据库基本编程语句,存储过程,触发器

Oracle:

CREATE OR REPLACE TRIGGER 触发器名
操作的前后节点(before|after|instead of) 操作的动作(insert|Update|Delete)  OF 列名
ON 表名
FOR EACH ROW--遍历表的每一句
DECLARE--定义变量关键字
变量1 数据类型;

变量2 数据类型;
BEGIN--开始
执行代码

END;--结束

eg:

/*CREATE OR REPLACE TRIGGER materialUpdate
BEFORE INSERT OR UPDATE OF FMaOverCtrlRate_LT
ON T_BD_MATERIALPRODUCE
FOR EACH ROW
DECLARE
IScambo NUMBER (20);
ISmaterial NUMBER (20);
BEGIN
SELECT t1.FUSEORGID, FCategoryID
INTO IScambo, ISmaterial
FROM T_BD_MATERIAL t1
LEFT JOIN t_BD_MaterialBase t2 ON t1.Fmaterialid = t2.Fmaterialid
WHERE t1.Fmaterialid = :new.Fmaterialid;

IF IScambo = 2231159 AND ISmaterial = 237
THEN
:new.FMaOverCtrlRate_LT := 5;
END IF;
END;
/
GO*/

级联删除:在两个表有外键约束时删除外键表数据需要先删除外键关联主表数据,再删除外表数据

create trigger 触发器名

on 要删除的外表名

instead of Delete

as 

declare 变量名(存放删除数据) 数据类型

select 变量名=关联的外键列名 from deleted

Delete from 主键表名 where 关联条件;

Delete from 外键表名 where 关联条件;