达梦数据库存储过程及游标使用
达梦数据库存储过程及游标使用
案例: 1.机构表(ORGAN)包含以下字段:主键(OBJUID)、机构名称(ORG_NAME)、机构类型(ORG_TYPE)、第三方机构ID(OUT_ID),等等)。 2.第三方机构关联表(ORGAN_OUT)包含以下字段:主键(OBJUID)、机构ID(ORG_ID)、第三方机构ID(OUT_ID)和第三方机构类型(OUT_TYPE)。 最终需要将机构表的机构ID和第三方机构ID迁移到第三方机构关联表中进行管理。SQL如下
-- 创建存储过程 -- CREATE OR REPLACE PROCEDURE "数据库名"."存储过程名"() CREATE OR REPLACE PROCEDURE "LYLP"."PROC_ORGAN_OUT"() AS -- 定义变量 myObjuid varchar(32); myOutId varchar(100); -- 定义游标 cursor orgCursor is select objuid, out_id from "LYLP"."ORGAN"; BEGIN -- 打开游标 open orgCursor; -- 循环获取游标内容 loop -- 获取游标中的内容 fetch orgCursor into myObjuid,myOutId; -- 如果游标到底,则退出循环 exit when orgCursor%notfound; -- 向ORGAN_OUT数据库中新增数据 if myOutId is not null and myOutId <> then -- sys_guid()达梦数据库获取UUID的方法,lower()达梦数据库大小写转换方法 insert into "LYLP"."ORGAN_OUT"("OBJUID","ORG_ID","OUT_ID","OUT_TYPE") values(lower(sys_guid()),myObjuid,myOutId,1); end if; end loop; -- 关闭游标 close orgCursor; END; -- 调用存储过程 call "LYLP"."PROC_ORGAN_OUT"(); -- 删除存储过程 DROP PROCEDURE "LYLP"."PROC_ORGAN_OUT";