1.存储过程
```sql
CREATE PROCEDURE PCREATE_USERRIGHT(IN FUNCODE varchar(10))
BEGIN
**//声明相关参数**
DECLARE vfuncode varchar(3);
DECLARE flag int default 0;
DECLARE mc cursor for select fcode from tfunction; **// 声明游标**
**//若没有数据返回,程序继续,并将变量flag设为1**
DECLARE continue handler for not found set flag = 1;
open mc;
IN_USERIGHT:loop **//定义循环标签**
fetch mc into vfuncode;
if flag = 1 then **//当无法fetch会触发handler continue**
leave IN_USERIGHT; **//无法fetch时离开循环体**
end if;
if(not exists(select 1 from tright where fucode=funcode and ffuncode=vfuncode)) then
insert into tright(fucode,ffuncode) values (funcode,vfuncode);
end if;
end loop;
close mc; **//关闭游标**
END
2.定义用户表TUSER插入数据时的触发器调用上面编写的存储过程,生成用户权限
CREATE TRIGGER
trigger_name trigger_time trigger_event
ON tb_name FOR EACH ROW trigger_stmt
trigger_name:触发器的名称
tirgger_time:触发时机,为BEFORE或者AFTER
trigger_event:触发事件,为INSERT、DELETE或者UPDATE
tb_name:表示建立触发器的表明,就是在哪张表上建立触发器
trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句
CREATE TRIGGER INSERT_RIGHT AFTER INSERT
ON TUSER FOR EACH ROW
BEGIN
CALL pcreate_userright(new.floginname);
END