国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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
主站蜘蛛池模板: 亚洲精品社区 | 亚洲精品第一综合99久久 | 欧美在线观看一区 | 亚洲视频在线观 | 不卡国产视频 | 欧美日韩国产乱了伦 | 国产精品视频3p | 国产欧美在线观看一区二区 | 亚洲一区二区三区在线播放 | 国内精品久久久久久久aa护士 | 欧美极品一区 | 国产美女视频黄a视频全免费网站 | 国产精品亚洲综合 | 在线观看日韩精品 | 另类专区欧美 | 精品一区二区三区四区电影 | 欧美第一页在线观看 | 羞羞色院91精品网站 | 又黄又爽的视频 | 国产在线看不卡一区二区 | 欧美xxx性| 久久久影院亚洲精品 | 久久91精品国产91久久户 | 日韩中文在线视频 | 欧美激情国产日韩精品一区18 | 91导航在线观看 | 国产99久久亚洲综合精品 | 国产成人一区二区三区 | 亚洲网站免费 | 欧美日韩三级在线观看 | 国模冰冰双人炮gogo | 国产a级一级久久毛片 | 国产肉丝 | 视频一区二区三区在线 | 亚洲一区二区三区免费 | 国产精品亚洲欧美一区麻豆 | 日本免费大黄 | 国产伦精品一区二区三区高清 | 久久精品国产一区二区三区不卡 | 精品国产日韩亚洲一区在线 | 亚洲区精品久久一区二区三区 |