儲存過程執行EXECUTE IMMEDIATE沒反應

zhangsharp20發表於2015-07-07

點選(此處)摺疊或開啟

  1. create or replace procedure p_di_tab_syn
  2. is
  3. lvc_di_tab_sql varchar2(4000);
  4. cursor cur_di_tab is
  5. select \'create or replace synonym \'||table_name||\' for \'||owner||\'.\'||table_name synonym_sql
  6.     from all_tables
  7.       where owner=\'J1_DI\' and (table_name like \'DI%\' or table_name like \'DM_%\')
  8.       order by owner,table_name;
  9. begin
  10. --建立di 使用者下對應表同義詞
  11. for mycur_di_tab in cur_di_tab loop
  12. lvc_di_tab_sql:=mycur_di_tab.synonym_sql;
  13. execute immediate lvc_di_tab_sql;
  14.   end loop;
  15.   exception
  16.     when others then
  17.       dbms_output.put_line(\'建立同義詞失敗.\'||to_char(sysdate, \'yyyy-mm-dd hh24:mi:ss\')||\', sqlcode:\'||to_char(sqlcode)||sqlerrm);
  18. end;
執行後,同義詞並未建立,但是單獨將SQL拿出來可以執行,經查,需要對執行建立的使用者進行顯示賦權才行,即

點選(此處)摺疊或開啟

  1. grant create any synonym to j1_ldm;
賦權之後,執行完即建立了同義詞

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

相關文章