ORACLE EXECUTE IMMEDIATE 用法詳解


最近工作中有用到存儲過程,關於存儲過程其中EXECUTE IMMEDIATE在實際開發中用到的還是比較多的 於是乎就把自己在用到時存在的用法及問題在這里總結一下:

如果在存儲過程中 有需要創建表格 更改表結構等操作的時候 並且在接下去的操作需要用到新的表或者結構等問題的時候 必須要使用EXECUTE IMMEDIATE 去執行SQL語句,否則由於oracle的機制則會提示報錯,表或者表結構未創建或為修改,這里只舉兩個例子,實際運用得根據情況去判斷!

最近的開發過程中也經常使用到執行一個字符串的SQL語句 需要將其插入到一個變量中來,EXECUTE IMMEDIATE 'SELECT T.ID FROM STUDENT T WHERE  A.NAME=''小明''' INTO V_ID(已在存儲過程定義的變量名)

這里只是舉例,假如小明只有一個 那個會順利的將值插入到變量中,但如果是該變量存在兩個或以上的值則需要用到

BULK COLLECT INTO 變量名;如果要將插入到多個變量中則在后面累加即可。

這里需要注意的是這個變量名必須是個數組類型,否則編譯無法通過,如果對其循環可以執行相應的操作。

如果語句中需要用到變量則有兩種方法:

方法1:可以拼接字符串類型的SQL語句,如(V_SQL:='SELECT T.ID FROM STUDENT T WHERE  A.NAME='|| V_NAME;)。

方法2:使用USING 關鍵字 例如: EXECUTE IMMEDIATE 'SELECT T.ID FROM STUDENT T WHERE  A.NAME=:V_NAME' USING '小明' INTO V_ID; 也可以把變量傳過來 這里只舉例

在一些特殊情況也可以通過這些操作來拼接SQL語句,例如限制條件的區分,這樣會使一個SQL語句在不同的場景中有不同的效果,而不只是簡單的用變量來取代的作用,

由於我使用oracle也只有幾個月時間,所以對這個的心得也大概如此了,希望對大家以后的使用會有所幫助。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM