介紹 Orale Dynamic SQL 如何動態取得多筆資料,
參考範例, 如下 :
程式碼
DECLARE V_SQL VARCHAR2(10000) := ''; TYPE V_RESULT_TYPE IS TABLE OF VARCHAR2(50); V_RESULT V_RESULT_TYPE; -- 各個 DB Site CURSOR CUR_SITE IS SELECT VALUE_DATA DB_LINK , VALUE_DISPLAY SITE FROM ERP_VALUE_SET WHERE VALUE_NAME = 'SITE'; BEGIN -- 動態組成 SQL 語法 FOR REC_SITE IN CUR_SITE LOOP IF CUR_SITE%ROWCOUNT > 1 THEN V_SQL := V_SQL || ' UNION ALL '; END IF; V_SQL := V_SQL || 'SELECT ''' || REC_SITE.SITE || ''' SITE' || ' FROM USER_OBJECTS@' || REC_SITE.DB_LINK || ' WHERE OBJECT_NAME = ''TOM_DB_PKG'' ' || ' AND STATUS <> ''VALID'' '; END LOOP; -- 執行動態語法 EXECUTE IMMEDIATE V_SQL BULK COLLECT INTO V_RESULT; -- 顯示結果: 多筆資料 DBMS_OUTPUT.PUT_LINE( 'TOM DB Package 有失效, 如下 :' ); FOR I IN 1..V_RESULT.COUNT() LOOP DBMS_OUTPUT.PUT_LINE( V_RESULT(I) ); END LOOP; END;
其他 Dynamic SQL 介紹文章 :
Dynamic SQL 基礎:Dynamic SQL 基本語法.
進階 1:動態執行 Procedure / Function.
進階 2:動態執行 begin ~ end;