日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载

發布時間:2025/3/12 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要內容:

有時,我們需要在存儲過程或函數中根據條件拼湊一些sql字符串語句,然后再執行拼湊后的sql字符串,如何做到呢?

參考以下代碼:

FUNCTION CALCULATE_TARGET_SCORE (CUR_MONTH IN NVARCHAR2)

RETURN NCLOB

IS

PRAGMA AUTONOMOUS_TRANSACTION;

TVALUE_SQL? ? ? ? ? VARCHAR2 (2000);? ? ? ? ?--查詢目標值的sql(不能把類型聲明為NVARCHAR2)

RESULT_STR? ? ? ? ? NCLOB;

KPI_VALUE? ? ? ? ? ?NVARCHAR2 (200);

CUR_MONTH_BILL_ID? ?NUMBER (19);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --固話單ID

BEGIN

--獲得當前固話單

SELECT MAX (ID)

INTO CUR_MONTH_BILL_ID

FROM GP_MONTH_BILL

WHERE MONTH = CUR_MONTH AND IS_USE = 1;

--循環獲得每個明細的完成值sql

IF CUR_MONTH_BILL_ID > 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--區縣指標

THEN

TVALUE_SQL :=

'SELECT TO_CHAR('

|| CUR_ROW.MAIN_FIELD

|| ') FROM '

|| CUR_ROW.END_TABLE

|| '_'

|| CUR_MONTH

|| ' WHERE TO_CHAR(DISTRICT_ID)='''

|| CUR_ROW.E_DISTRICT_ID

|| '''';

ELSE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--客戶經理指標

TVALUE_SQL :=

'SELECT TO_CHAR('

|| CUR_ROW.MAIN_FIELD

|| ') FROM '

|| CUR_ROW.END_TABLE

|| '_'

|| CUR_MONTH

|| ' WHERE MANAGER_NO='''

|| CUR_ROW.MANAGER_NO

|| '''';

END IF;

BEGIN

EXECUTE IMMEDIATE TVALUE_SQL INTO KPI_VALUE;? ? ? --執行sql,得到完成值kpi_value

EXCEPTION

WHEN OTHERS

THEN

RESULT_STR :=

RESULT_STR

|| '
sql執行錯誤:'

|| TVALUE_SQL

|| ' INTO KPI_VALUE';

END;

--一些sql邏輯,含dml語句

COMMIT;

END;

關鍵語句:EXECUTE IMMEDIATE TVALUE_SQL INTO KPI_VALUE;

本項目涉及到的知識點:

1)在該示例中,需要把查詢的值動態賦值給一個變量。注意變量的賦值不是在sql字符串中去拼湊,而是在執行sql字符串時在末尾加入 INTO VAL

2)如果要通過查詢方式調用函數,同時函數中包含DML 語句時,在聲明函數需要加入 PRAGMA AUTONOMOUS_TRANSACTION;

查詢調用函數示例: SELECT YOUR_FUN(VAL1,VAL2...)? FROM DUAL;

3)如果函數聲明中含有 PRAGMA AUTONOMOUS_TRANSACTION; 則在函數結尾加入commit 或 rollback

關聯閱讀:ORA-14551: 無法在查詢中執行 DML 操作

總結

以上是生活随笔為你收集整理的oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。