在System賬號下執(zhí)行以下存儲過程出現(xiàn)權限不足錯誤 create ?procedure ?immediateSQL begin executive immediate grant select on ?scott.emp to ?infodata; end; begin immediateSQL; end; 但是直接在SQL Plus下直接執(zhí)行以下語句沒有任何問題 begin executiv
在System賬號下執(zhí)行以下存儲過程出現(xiàn)權限不足錯誤
create ?procedure ?immediateSQL
begin
executive immediate ‘grant select on ?scott.emp to ?infodata’;
end;
begin
immediateSQL;
end;
但是直接在SQL Plus下直接執(zhí)行以下語句沒有任何問題
begin
executive immediate ‘grant select on ?scott.emp to ?infodata’;
end;
查閱資料發(fā)現(xiàn)存儲過程分為兩種,即DR(Definer’s Rights ) Procedure和IR(Invoker’s Rights ) Procedure。
如下定義執(zhí)行后就沒有問題
create ?procedure ?immediateSQL ?AUTHID CURRENT_USER
begin
executive immediate ‘grant select on ?scott.emp to ?infodata’;
end;
存儲過程的名稱解析環(huán)境 存儲過程的執(zhí)行權限
這兩個問題可以在定義存儲過程時,通過指定AUTHID 屬性,即定義DR Procedure 和IR Procedure來解決。
DR Procedure
1、定 義
CREATE OR REPLACE procedure DEMO(ID in NUMBER) AUTHID DEFINER as
BEGIN
END;
2、名稱解析環(huán)境為定義該存儲過程的用戶所在的Schema。
3、執(zhí)行該存儲過程時只有Public權限。
IR Procedure
1、定 義
CREATE OR REPLACE procedure DEMO(ID in NUMBER) AUTHID CURRENT_USER as
BEGIN
END;
2、名稱解析環(huán)境為調(diào)用該存儲過程的用戶所在的Schema。
3、執(zhí)行該存儲過程時擁有調(diào)用者的所有權限,即調(diào)用者的Role是有效的。
原文地址:存儲過程中動態(tài)SQL權限不足, 感謝原作者分享。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com