回覆列表
  • 1 # 胖輝有話說

    1、先執行個測試Sql,檢查一下環境。

    環境OK。

    SQL:

    select sysdate from dual

    2、call:

    使用call 呼叫一個系統函式dbms_output.put_line。

    可以看到,可以正常執行,並且得到預期的執行結果。

    SQL:

    set serveroutput on;--用來看到函式的輸出

    call dbms_output.put_line("use key call");

    3、exec:

    使用exec呼叫一個系統函式dbms_output.put_line。

    可以看到,執行時報錯了ORA-00900。

    SQL:

    execdbms_output.put_line("use key exec");

    4、小結:

    call可以和sql一樣執行;

    exec不是sql的關鍵字,不能像sql一樣執行。

    小貼士:

    exec就是execute的縮寫了

    5、說好的call和exec很像,很曖昧了。在哪了

    客官稍等,馬上就來:

    SQL*Plus上場!!!

    命令:

    sqlplus / as sysdba;

    6、重複在Oracle SQL Developer中操作。

    可以看到都成功了!

    因為在實際的資料庫開發中,不可能在Oracle SQL Developer中執行。

    大多數是在PL/SQL指令碼中,其它語言,譬如java的程式碼中執行。

    這樣就分不出來這兩個關鍵字的區別了。

    7、再往裡面看看,這兩個關鍵詞的區別。

    call 在Oracle實際執行時沒有變化。因為本來就是Oracle的關鍵字

    exec 在Oracle實際執行時,轉換成begin exec後面跟的語句塊 end; 可以理解為Oracle為方便使用而引入的語法糖吧。

    SQL:

    select sql_text from v$sql where sql_text like "%目標語句中帶的特殊字元%";

  • 中秋節和大豐收的關聯?
  • 熱帶雨林的爆笑生活都有什麼版本一共幾集啊?