<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
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Oracle過程中執行動態SQL或DDL語句

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

        Oracle過程中執行動態SQL或DDL語句

        Oracle過程中執行動態SQL或DDL語句:如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行, sql_str 是一個拼湊的 SQL 語句, 如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行,
        推薦度:
        導讀Oracle過程中執行動態SQL或DDL語句:如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行, sql_str 是一個拼湊的 SQL 語句, 如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行,

        如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行, sql_str 是一個拼湊的 SQL 語句,

        如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行, sql_str 是一個拼湊的 SQL 語句,但這個動態語句中帶參數,或 Select 的結果要 into 到變量中時就要稍加留心一下了。而在 8i 以前的版本(誰還用這么古老的玩藝,總有些不得已的地方,老系統考慮升級成本遺留下來的,應用軟件所伴隨著的等),都沒法用 execute immediate,,就得使用 DBMS_SQL 包來實現了

        何謂動態 SQL 和 DDL 語句呢?通常在過程中要操作的表名、字段名都必須是明確的,否則編譯過程時就要報錯,但如果這兩者也用變量名來表示就是動態的。DDL 就是數據庫對象定義的操作,如 CREATE TABLE/VIEW/INDEX/SYN/CLUSTER……,及這些對象的刪除、修改操作等等。

        比如在 Oracle 中有執行下面過程塊的意圖時,就要使用到 execute immediate 或是 DBMS_SQL 包了。當然下面的語句塊是通不過的。

        declare

        col_name varchar2(30) := 'name'; --假定表user存在name字段

        col_val varchar2(30);

        begin

        select col_name into col_val --按照慣常思維,可能就會這么寫

        from user where age between 18 and 25; --編譯時會提示列名不存在的

        drop table t2; --不能直接執行 DDL 語句,后面查詢 t2 編譯器就無能為力了

        end;

        現在我們提出對上面問題的解,針對第一個 Select 語句來說明,并假設查詢中還帶有參數。塊中的 DDL 也是類似的解法。例子因力圖涵蓋更多內容,所以稍顯復雜,如果不需要 into (如 update/delete 語句),或者不帶參數,會簡單多了,應不難簡化。有兩種處理方法,以 8i 為分水嶺。

        1. Oracle 8i 及以上版本的過程中處理動態 SQL 語句的辦法

        declare

        v_col_name varchar2(30) := 'name'; --字段名 name 用變量來表示

        v_user_name varchar2(30); --用戶名稱

        v_user_age integer; --用戶年齡

        v_sql_str varchar2(500); --動態 SQL 語句

        begin

        v_sql_str := 'select '||v_col_name||',age from users --字段名后面不能緊隨 into 到變量了

        where age between :start_age and :end_age and rownum=1'; --兩個命名參數

        --用 execute immediate 動態執行 SQL 語句

        --注意其后的 into 字段值到變量的寫法,還有 using 來代入參數

        execute immediate v_sql_str into v_user_name,v_user_age using 18,25;

        dbms_output.put_line('第一個符合條件的用戶:'||v_user_name||',年齡:'||v_user_age);

        end;

        除此之外,在 Oracle 8i 及以上版本中,還能用 DBMS_UTILITY.EXEC_DDL_STATEMENT(ddl_sql_str) 執行 DDL 語句。

        linux

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

        文檔

        Oracle過程中執行動態SQL或DDL語句

        Oracle過程中執行動態SQL或DDL語句:如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行, sql_str 是一個拼湊的 SQL 語句, 如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行,
        推薦度:
        標簽: sql 語句 oracle
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品视频在线观看你懂的| 日本免费人成黄页在线观看视频| 在线亚洲精品福利网址导航| 免费播放美女一级毛片| 青青青青青青久久久免费观看| 久久精品熟女亚洲av麻豆| 又粗又硬又黄又爽的免费视频| 美女黄色免费网站| 中文字幕亚洲日韩无线码| 波霸在线精品视频免费观看| 国产AV无码专区亚洲AVJULIA| 女人体1963午夜免费视频| 色婷婷六月亚洲婷婷丁香| 青娱乐免费在线视频| 亚洲AV无码一区二区三区性色 | 亚洲a∨无码精品色午夜| 日韩成人在线免费视频| 男人和女人高潮免费网站| 亚洲中文字幕无码中文字在线| 久久精品免费视频观看| 亚洲小说图片视频| 国产午夜鲁丝片AV无码免费| 国产免费人成视频尤勿视频| 久久久国产精品亚洲一区| 成年女人视频网站免费m| 美女免费视频一区二区| 亚洲无人区一区二区三区| 精品国产sm捆绑最大网免费站| 免费夜色污私人影院网站电影| 久久久久亚洲AV成人网人人软件 | 一个人看的www在线免费视频| 16女性下面扒开无遮挡免费| 精品久久亚洲中文无码| 亚洲国产精品人人做人人爱| 无码国产精品一区二区免费模式| 日韩亚洲国产高清免费视频| 亚洲男人第一无码aⅴ网站| 18禁止看的免费污网站| 污视频网站在线观看免费| 久久精品国产亚洲77777| 亚洲Av无码国产情品久久 |