国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

oracle筆記-動態(tài)SQL

2024-08-29 13:36:07
字體:
供稿:網(wǎng)友
  第 16 章 動態(tài)SQL  16.1 為何使用動態(tài)SQL  實現(xiàn)動態(tài)SQL有兩種方式:DBMS_SQL和本地動態(tài)SQL(EXECUTE IMMEIDATE)  主要從以下方面考慮使用哪種方式:   1.      是否知道涉及的列數(shù)和類型  DBMS_SQL包括了一個可以“描述”結果集的存儲過程(DBMS_SQL.DESCRIBE_COLUMNS),而本地動態(tài)SQL沒有。  2.      是否知道可能涉及的綁定變量數(shù)和類型  DBMS_SQL答應過程化的綁定語句的輸入,而本地動態(tài)SQL需要在編譯時確定。  3.      是否使用“數(shù)組化”操作(Array PRocessing)  DBMS_SQL答應,而本地動態(tài)SQL基本不可以,但可以用其他方式實現(xiàn)(對查詢可用FETCH BULK COLLECT INTO,對INSERT等,可用一個BEGIN … END塊中加循環(huán)實現(xiàn))。  4.      是否在同一個會話中多次執(zhí)行同一語句  DBMS_SQL可以分析一次執(zhí)行多次,而本地動態(tài)SQL會在每次執(zhí)行時進行軟分析。  5.      是否需要用REF CURSOR返回結果集  僅本地動態(tài)SQL可用REF CURSOR返回結果集。  16.2 如何使用動態(tài)SQL  DBMS_SQL  1.      調(diào)用OPEN_CURSOR獲得一個游標句柄;  2.      調(diào)用PARSE分析語句。一個游標句柄可以用于多條不同的已分析語句,但一個時間點僅一條有效;  3.      調(diào)用BIND_VARIABLE或BIND_ARRAY來提供語句的任何輸入;  4.      若是一個查詢(SELECT語句),調(diào)用DIFINE_COLUMN或DEFINE_ARRAY來告知Oracle如何返回結果;  5.      調(diào)用EXECUTE執(zhí)行語句;  6.      若是一個查詢,調(diào)用FETCH_ROWS來讀取數(shù)據(jù)。可以使用COLUMN_VALUE從SELECT列表根據(jù)位置獲得這些值;  7.      否則,若是一個PL/SQL塊或帶有RETURN子句的DML語句,可以調(diào)用VARIABLE_VALUE從塊中根據(jù)變量名獲得OUT值;  8.      調(diào)用CLOSE_CURSOR.  注重這里對任何異常都應該處理,以關閉游標,防止泄露資源。  本地動態(tài)SQL  EXECUTE IMMEDIATE ‘語句’  [INTO {變量1, 變量2, … 變量N 記錄體}]  [USING [IN OUT IN OUT] 綁定變量1, … 綁定變量N]  [{RETURNING RETURN} INTO 輸出1 [, …, 輸出N]…];  注重本地動態(tài)SQL僅支持弱類型REF CURSOR,即對于REF CURSOR,不支持BULK COLLECT.  16.3 最后說明  動態(tài)SQL的負面:破壞了依靠鏈、代碼更脆弱、很難調(diào)優(yōu)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 壤塘县| 赤水市| 海淀区| 龙岩市| 工布江达县| 曲松县| 邢台县| 博客| 福鼎市| 吴旗县| 安陆市| 通州区| 兰坪| 驻马店市| 新乐市| 桓台县| 洛阳市| 雅江县| 上林县| 宜兰县| 崇文区| 尼玛县| 威远县| 巫溪县| 兰坪| 青河县| 永昌县| 凤凰县| 太湖县| 胶州市| 都昌县| 胶州市| 定襄县| 通化市| 永定县| 乌恰县| 建阳市| 大余县| 长泰县| 富顺县| 昂仁县|