1. 程式人生 > >Oracle_獲取動態sql的值 EXECUTE IMMEDIATE.. INTO ..

Oracle_獲取動態sql的值 EXECUTE IMMEDIATE.. INTO ..

BEGIN
    DECLARE
        ls_sql VARCHAR2(4000);
        ln_cnt INT;
    BEGIN
        ln_cnt := 0;
        ls_sql := 'select count(*) from  (select 1 from dual) a ';
        EXECUTE IMMEDIATE ls_sql
            INTO ln_cnt;
        DBMS_OUTPUT.PUT_LINE(ln_cnt);
    
    END;
END;

output
 1
ORACLE EXECUTE IMMEDIATE 用法
EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.
它解析並馬上執行動態的SQL語句或非執行時建立的PL/SQL塊.動態建立和執行SQL語句效能超前,EXECUTE IMMEDIATE的目標在於減小企業費用並獲得較高的效能,較之以前它相當容易編碼.儘管DBMS_SQL仍然可用,但是推薦使用EXECUTE IMMEDIATE,因為它獲的收益在包之上。
-- 使用技巧
1. EXECUTE IMMEDIATE將不會提交一個DML事務執行,應該顯式提交
如果通過EXECUTE IMMEDIATE處理DML命令,
那麼在完成以前需要顯式提交或者作為EXECUTE IMMEDIATE自己的一部分.
如果通過EXECUTE IMMEDIATE處理DDL命令,它提交所有以前改變的資料
2. 不支援返回多行的查詢,這種互動將用臨時表來儲存記錄(參照例子如下)或者用REF cursors.
3. 當執行SQL語句時,不要用分號,當執行PL/SQL塊時,在其尾部用分號.
4. 在Oracle手冊中,未詳細覆蓋這些功能。
下面的例子展示了所有用到Execute immediate的可能方面.希望能給你帶來方便.
5. 對於Forms開發者,當在PL/SQL 8.0.6.3.版本中,Forms 6i不能使用此功能.

相關推薦

Oracle_獲取動態sql EXECUTE IMMEDIATE.. INTO ..

BEGIN     DECLARE         ls_sql VARCHAR2(4000);         ln_cnt INT;     BEGIN         ln_cnt := 0;         ls_sql := 'select count(*) fr

動態 SQLEXECUTE IMMEDIATE、using、into、returning

很多時候我們需要在儲存過程中使用動態的SQL,要怎麼用好動態SQL呢,怎樣執行效率最高呢。下面來介紹一下,如何使用動態SQL操作資料庫。 在儲存過程中執行一個簡單的SQL語句使用下面的方法即可。 DECLARE BEGIN /* 使用該方法來建立一個新資料表,但

oracle 動態sql執行-EXECUTE IMMEDIATE

-- 使用技巧 1. EXECUTE IMMEDIATE將不會提交一個DML事務執行,應該顯式提交 如果通過EXECUTE IMMEDIATE處理DML命令, 那麼在完成以前需要顯式提交或者作為EXECUTE IMMEDIATE自己的一部分. 如果通過EXECUTE IM

sql server 獲取動態sql輸出結果

不帶輸出結果 我們一般會這樣寫 例子:一個輸出6位遞增號碼結果 ALTER proc GetCode @tb varchar(50), @tag varchar(50) as declare @sqlstring nvarchar(max) set @sqlstring=' SELE

sqlserver 動態sql執行execute和sp_executesql

  sqlserver 動態sql的執行,有兩個方法execute和 sp_executesql.其中第一個方法execute可以簡寫為exec. execute方法適合執行沒有返回值的動態sql,sp_executesql可以獲取到動態sql的返回值.二者比較

Oracle中動態SQL詳解(EXECUTE IMMEDIATE)

Oracle中動態SQL詳解(EXECUTE IMMEDIATE) 2017年05月02日 18:35:48 悠悠傾我心 閱讀數:744 標籤: oracle動態sqloracle 更多

mysql儲存過程 在動態SQL獲取返回

MySql通用分頁儲存過程 過程引數 p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4000),p_order varchar(100),p_pageindex int,p_pagesize int

mysql儲存過程在動態SQL獲取返回

DROPPROCEDUREIFEXISTS stat_cube.sp_get_end_date;CREATEPROCEDURE stat_cube.`sp_get_end_date`( p_sp_name varchar(50), out p_ret_date date )BEGINdeclare src_1

4.mybatis動態SQL拼接/取/OGNL

align log 值方法 enter png 動態 mybatis框架 -a ognl 4.mybatis動態SQL拼接/取值 一、mybatis框架的SQL拼接是采用OGNL表達式進行的,以下我會列出常用的取值方法。 圖片來源:慕課網 1.1常用的取值方法: 1.2特

Android 根據從伺服器中獲取的rgb實現動態改變圓角加框的Imageview 的背景色

先上圖,效果圖如上。 本來考慮用facebook的SimpleDraweeView 來實現圓角加框的,但並非所有的圖片分支部分都可以實現圓角,目前只有佔位圖片和實際圖片可以實現圓角。 後來使用自定義的的控制元件RoundImageView來實現圓角加框,那麼問題來了。

js 獲取select的 / js動態給select賦 jQuery獲取

jQuery獲取Select選擇的Text和Value:語法解釋:1. $("#select_id").change(function(){//code...});   //為Select新增事件,當選擇其中一項時觸發2. var checkText=$("#select_id"

執行動態 sql 併為 輸出引數賦、sp_executesql 使用方法

sp_executesql  過程與 exec 關鍵字區別 sp_executesql  可以在動態 sql 中使用變數,並且將變數輸出 exec 則只能執行動態 sql 和 儲存過程(執行過程不需要加小括號,執行動態 sql 則必須加小括號) ----------------

jquery獲取 動態表中所有的單選框

HTML程式碼,此處為動態生成的表: <table class="table table-striped table-bordered table-hover" id="testtable">     <thead  align="center" styl

給偽元素的css屬性動態以及獲取css屬性

一/ 設定值 就是動態新增style $('head').append($('<style class="styleBefore">.leveltwo-scroll::before{height:' + domRight + 'px;}</style>'));

Jquery chosen動態設定 select Ajax動態載入資料 設定chosen和獲取他們選中的

  在做一個編輯對話方塊時,要對裡面帶有select option的操作。主要是想動態載入option和對option的選中。但是由於專案中使用了jquery裡的chosen()方法,怎麼也無法實現效果。原碼如下: Java程式碼   <select id="viewOLanguage" 

返回動態SQL語句中執行結果

--值,動態查詢結果返回 DECLARE @query NVARCHAR(MAX) DECLARE @testVal INT SET @query='select @testVal=

mysql儲存過程執行動態sql語句並返回

Java程式碼 set @sql=’xxx’; prepare stmt from @sql; execute stmt; deallocate prepare stmt; select @curd1; set @sql=’xxx’; prepare stmt f

用sp_executesql執行動態SQL語句及獲得返回

過去我執行拼湊出來的動態SQL語句,都直接使用EXEC @sql 的方式。有好幾次,都看到有資料說,應該儘量使用 sp_executesql。究其原因,是因為僅僅引數不同的情況下,sp_executesql可以重用執行計劃,這不就有跟儲存過程一樣的優勢了嗎?同時,sp_exe

oracle儲存過程中使用execute immediate執行sql報ora-01031許可權不足的問題

--問題描述: 使用者在儲存過程中呼叫execute immediate 執行 create table語句報錯 ORA-01031, 並且反映直接執行該語句無報錯。--原因根據問題可以發現使用者確實有create table的許可權,查詢dba_role_privs 和 d

js 實現對Select動態 C#從後臺獲取

js 程式碼 <script type="text/javascript"> $(function () { var Annuals = $("#txtAnnual"); var today = new Date();