存储过程(sp)的应用

存储赋权
存储逻辑处理有返加值
存储有异常处理

create or replace procedure proc_grant(OWNER VARCHAR2,OWNERAPP VARCHAR2,OWNERREAD VARCHAR2)
AS
V_OBJECT VARCHAR(128);
CURSOR BRANCH01 IS SELECT OBJECT_NAME FROM USER_OBJECTS T WHERE OBJECT_TYPE IN('TABLE','VIEW');
CURSOR BRANCH02 IS SELECT OBJECT_NAME FROM USER_OBJECTS T WHERE OBJECT_TYPE IN('FUNCTION','FROCEDURE','PACKAGE');
CURSOR BRANCH03 IS SELECT OBJECT_NAME FROM USER_OBJECTS T WHERE OBJECT_TYPE IN('SEQUENCE');
BEGIN
V_OBJCET :='';
OPEN BRANCH01;
LOOP
FETCH CUR_BRANCH01
INTO V_OBJECT;
EXIT WHEN CUR_BRANCH01%NOTFOUND;
IF LENGTH(TRIM(OWNERAPP))>0
THEN
EXECUTE IMMEDIATE 'GRANT SELECT,INSERT,DELETE,UPDATE ON '||V_OBJECT||' TO '||OWNERAPP;
EXECUTE IMMEDIATE 'CREATE OR REPLACE SYNONYM '||OWNERAPP||'.'||V_OBJECT||' FOR '||OWNER||'.'||V_OBJECT;

END IF;
END LOOP;
CLOSE BRANCH01
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE || SQLERRM);
WHEN OTHERS THEN
INSERT INTO LOG(ECODE,EMESSAGE,EINFO) VALUES(V_ERRCODE,V_ERRMSG,V_INFORMATION);
COMMIT;
RETURN
END proc_grant;



例2:
Connection conn=ConUtil.getConnectio n();
CallableStatement proc;
int res=0;
proc=conn.prepareCall("{call proc1(?)}");
proc.registerOutParameter(1,Types.NUMBERIC);
proc.execute();
res=proc.getInt(1);
con.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值