create or replace procedure proc01 as 2 begin 3 dbms_lock.sleep(10); 4 end; 5 / Procedure created. SQ" />

<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        關于在procedure中調用dbms_lock的package

        來源:懂視網 責編:小采 時間:2020-11-09 13:06:29
        文檔

        關于在procedure中調用dbms_lock的package

        關于在procedure中調用dbms_lock的package:開發人員創建的procedure需要調用dbms_lock的package中的對象,調用時候出現了類似下列的問題。 SQL> create or replace procedure proc01 as 2 begin 3 dbms_lock.sleep(10); 4 end; 5 / Procedure created. SQ
        推薦度:
        導讀關于在procedure中調用dbms_lock的package:開發人員創建的procedure需要調用dbms_lock的package中的對象,調用時候出現了類似下列的問題。 SQL> create or replace procedure proc01 as 2 begin 3 dbms_lock.sleep(10); 4 end; 5 / Procedure created. SQ

        開發人員創建的procedure需要調用dbms_lock的package中的對象,調用時候出現了類似下列的問題。 SQL> create or replace procedure proc01 as 2 begin 3 dbms_lock.sleep(10); 4 end; 5 / Procedure created. SQL> show user; USER is "SYS" SQL> conn xiaoy

        開發人員創建的procedure需要調用dbms_lock的package中的對象,調用時候出現了類似下列的問題。
        SQL> create or replace procedure proc01 as
        2 begin
        3 dbms_lock.sleep(10);
        4 end;
        5 /

        Procedure created.

        SQL> show user;
        USER is "SYS"
        SQL> conn xiaoyu/xiaoyu
        Connected.
        SQL> create or replace procedure proc01 as
        2 begin
        3 dbms_lock.sleep(10);
        4 end;
        5 /

        Warning: Procedure created with compilation errors.

        SQL> show errors;
        Errors for PROCEDURE PROC01:

        LINE/COL ERROR
        -------- -----------------------------------------------------------------
        3/1 PL/SQL: Statement ignored
        3/1 PLS-00201: identifier 'DBMS_LOCK' must be declared
        SQL> conn / as sysdba
        Connected.

        這里用靜態sql調用dbms_lock的package時,oracle報出了無法識別該package,這里需要單獨授權這個package給用戶,這個需要特別注意,因為正常的匿名塊程序中我們是可以調用的,但是procedure中則不行了。
        SQL> grant execute on sys.dbms_lock to xiaoyu;

        Grant succeeded.

        SQL> conn xiaoyu/xiaoyu
        Connected.
        SQL> create or replace procedure proc01 as
        2 begin
        3 dbms_lock.sleep(10);
        4 end;
        5 /

        Procedure created.

        但是這里并不是說所有的dbms開頭的package下的對象都不能在procedure或者function中調用,比如dbms_stats的package在不單獨授權的情況下就能夠正常調用。

        SQL> create or replace procedure proc03 as
        2 begin
        3 dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'T_DYNAMIC01');
        4 end;
        5 /

        Procedure created.

        這里我們想想動態sql能否實現了:
        SQL> revoke execute on sys.dbms_lock from xiaoyu;

        Revoke succeeded.

        SQL> create or replace procedure proc01 as
        2 begin
        3 execute immediate 'dbms_lock.sleep(10)';
        4 end;
        5 /

        Procedure created.

        SQL> exec proc01;
        BEGIN proc01; END;

        *
        ERROR at line 1:
        ORA-00900: invalid SQL statement
        ORA-06512: at "SYS.PROC01", line 3
        ORA-06512: at line 1

        這里來看動態sql執行的時候出現了問題,oracle報出了在第三行出現了無效的語句,動態sql相比靜態sql可以解決一些靜態sql無法實現的問題,比如參數的不確定性造成沒辦法評估程序的具體操作,再比如在存儲過程或者匿名塊中實現ddl語句。

        如下動態sql解決在procedure中實現ddl的示例:
        SQL> create or replace procedure proc02 as
        2 begin
        3 create table t_dynamic01 as select * from dual;
        4 end;
        5 /

        Warning: Procedure created with compilation errors.

        SQL> show errors;
        Errors for PROCEDURE PROC02:

        LINE/COL ERROR
        -------- -----------------------------------------------------------------
        3/1 PLS-00103: Encountered the symbol "CREATE" when expecting one of
        the following:
        begin case declare exit for goto if loop mod null pragma
        raise return select update while with
        <<
        close current delete fetch lock insert open rollback
        savepoint set sql execute commit forall merge pipe

        SQL> create or replace procedure proc02 as
        2 begin
        3 execute immediate 'create table t_dynamic01 as select * from dual';
        4 end;
        5 /

        Procedure created.

        SQL> exec proc02;

        PL/SQL procedure successfully completed.

        SQL> select * from t_dynamic01;

        D
        -
        X

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        關于在procedure中調用dbms_lock的package

        關于在procedure中調用dbms_lock的package:開發人員創建的procedure需要調用dbms_lock的package中的對象,調用時候出現了類似下列的問題。 SQL> create or replace procedure proc01 as 2 begin 3 dbms_lock.sleep(10); 4 end; 5 / Procedure created. SQ
        推薦度:
        標簽: 關于 調用 pack
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top 主站蜘蛛池模板: 最近免费中文字幕MV在线视频3| 亚洲AV永久无码天堂影院| 搜日本一区二区三区免费高清视频| 久久久久久久免费视频| 亚洲一区二区三区高清视频| 7x7x7x免费在线观看| 亚洲av成人一区二区三区| 成年女人毛片免费播放视频m| 亚洲成A人片在线播放器| 国产精品成人免费视频网站京东 | 国产免费怕怕免费视频观看| 亚洲真人无码永久在线观看| 免费国产小视频在线观看| ww在线观视频免费观看w| 亚洲精品色午夜无码专区日韩| 成人黄网站片免费视频| 亚洲大尺码专区影院| 夫妻免费无码V看片| 日韩一区二区三区免费播放| 亚洲春色在线视频| 99精品国产免费久久久久久下载| 亚洲综合国产成人丁香五月激情 | 免费一级肉体全黄毛片| 香蕉免费看一区二区三区| 亚洲视频一区网站| 波多野结衣久久高清免费| 国产日韩精品无码区免费专区国产| 亚洲AV午夜福利精品一区二区| 亚洲人成电影网站免费| 美国免费高清一级毛片| 亚洲国产另类久久久精品| 成人黄软件网18免费下载成人黄18免费视频 | 免费jjzz在线播放国产| 丝袜足液精子免费视频| 亚洲国产精品综合久久2007| 免费一级特黄特色大片在线观看| 国色精品va在线观看免费视频| 国产色在线|亚洲| 国产亚洲精品免费视频播放| 69成人免费视频| 中文精品人人永久免费|