储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
1、语法
create or replace procedure 存储过程的名称 is
begin
xxxx......此处为自己需要执行的sql语句
end 存储过程的名称;
2、实例
create or replace procedure P_Sub_Leaders is
begin
execute immediate 'TRUNCATE TABLE SUBCOM_LEADERS';
COMMIT;
insert into SUBCOM_LEADERS
(ID, ORG_ID, USERNAME, REALNAME)
SELECT PARENT_NODE_ID id,
NODE_ID orgId,
ORG_ID uername,
ORG_NAME realName
FROM T_SYS_TREE
WHERE PARENT_NODE_ID IN
(SELECT NODE_ID id FROM T_SYS_TREE where ORG_NAME = '分公司领导');
COMMIT;
UPDATE SUBCOM_LEADERS L
SET (L.ORG_NAME, L.NODEORDER) =
(SELECT B.subcomName, B.nodeOrder
FROM (SELECT T.NODE_ID nodeId,
T.ORG_NAME orgName,
S.subcomName,
S.id subcomId,
S.nodeOrder
FROM T_SYS_TREE T,
(SELECT T.NODE_ID id,
T.ORG_NAME subcomName,
T.NODE_ORDER nodeOrder
FROM T_SYS_TREE T
WHERE NODE_ID IN
(SELECT PARENT_NODE_ID pId
FROM T_SYS_TREE
where ORG_NAME = '分公司领导')) S
WHERE T.PARENT_NODE_ID = S.id
AND T.ORG_NAME = '分公司领导'
ORDER BY S.nodeOrder) B
WHERE B.nodeId = L.id);
COMMIT;
end P_Sub_Leaders;
3、调用
call P_Sub_Leaders ();