declare status varchar2(10);status := select status from user_objects where object_type = 'PROCEDURE' and object_name='procedure_saveRoleMenu';if status == 'VALID' then drop procedure procedure_saveRoleMenu;end if;create or replace procedure procedure_saveRoleMenu is begin insert into TRoleMenu(roleID,menuID) values(2,1);call procedure_saveRoleMenu;commit;exception when others then rollback;end;
简单说下功能
首先定义一个变量,然后查询是否存在procedure_saveRoleMenu这个存储过程,存在就删除年,再建。
存储过程实例的就一简单的插入一条数据,然后提交事务,如果出现异常,就事务回滚。
本人少写这稍复杂点的语句,小平较差,见笑,请大虾帮忙改下,谢过。
------解决方案--------------------
declare
v_status varchar2(10);
begin
select status into v_status from user_objects where object_type = 'P
end
/
------解决方案--------------------
DDL语句要用动态sql
------解决方案--------------------
CREATE OR REPLACE PROCEDURE PROCEDURE_SAVEROLEMENU IS
BEGIN
INSERT INTO TROLEMENU (ROLEID, MENUID) VALUES (2, 1);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
存储过程在创建时用CREATE OR REPLACE,就说明一点,存在则覆盖,不存在则创建。所以,我认为,楼主在前面写的删除存储过程的sql块是多余的,是可以省略的。