儲存過程與許可權

LuiseDalian發表於2014-01-15
在SQL中可以正常執行的語句,為什麼在儲存過程中卻無法執行?

1.定義者許可權儲存過程role無效,必須要有顯示的授權  AUTHID DEFINER

點選(此處)摺疊或開啟

  1. conn / AS SYSDBA;
  2. CREATE USER usera IDENTIFIED BY usera;
  3. CREATE USER luise IDENTIFIED BY luise;
  4. GRANT CONNECT, RESOURCE TO usera;
  5. GRANT CONNECT, RESOURCE, DBA TO luise;

  6. conn usera/usera;
  7. CREATE TABLE usera_tab AS SELECT * FROM all_objects;

  8. --luise使用者因為具有DBA角色,可以執行usera方案下的表的刪除操作
  9. conn luise/luise;
  10. DELETE FROM usera.usera_tab;

  11. --但在luise使用者下建立儲存過程,執行同樣的刪除操作,卻不可以
  12. CREATE OR REPLACE PROCEDURE lusie_proc
  13. AS
  14. BEGIN
  15.   DELETE FROM usera.usera_tab;
  16.   COMMIT;
  17. END;
  18. /

  19. Warning: Procedure created with compilation errors.

  20. --檢視錯誤
  21. luise@TESTDB11>show errors
  22. Errors for PROCEDURE LUSIE_PROC:

  23. LINE/COL ERROR
  24. -------- -----------------------------------------------------------------
  25. 4/3 PL/SQL: SQL Statement ignored
  26. 4/21 PL/SQL: ORA-00942: table or view does not exist

  27. --usera登入給luise直接授權
  28. conn usera/usera;
  29. GRANT ALL ON usera_tab TO luise;

  30. --再次登入,編譯成功
  31. conn luise/luise
  32. CREATE OR REPLACE PROCEDURE lusie_proc
  33. AS
  34. BEGIN
  35.   DELETE FROM usera.usera_tab;
  36.   COMMIT;
  37. END;
  38. /

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1070896/,如需轉載,請註明出處,否則將追究法律責任。

相關文章