oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载
主要內(nèi)容:
有時(shí),我們需要在存儲(chǔ)過(guò)程或函數(shù)中根據(jù)條件拼湊一些sql字符串語(yǔ)句,然后再執(zhí)行拼湊后的sql字符串,如何做到呢?
參考以下代碼:
FUNCTION CALCULATE_TARGET_SCORE (CUR_MONTH IN NVARCHAR2)
RETURN NCLOB
IS
PRAGMA AUTONOMOUS_TRANSACTION;
TVALUE_SQL? ? ? ? ? VARCHAR2 (2000);? ? ? ? ?--查詢目標(biāo)值的sql(不能把類型聲明為NVARCHAR2)
RESULT_STR? ? ? ? ? NCLOB;
KPI_VALUE? ? ? ? ? ?NVARCHAR2 (200);
CUR_MONTH_BILL_ID? ?NUMBER (19);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --固話單ID
BEGIN
--獲得當(dāng)前固話單
SELECT MAX (ID)
INTO CUR_MONTH_BILL_ID
FROM GP_MONTH_BILL
WHERE MONTH = CUR_MONTH AND IS_USE = 1;
--循環(huán)獲得每個(gè)明細(xì)的完成值sql
IF CUR_MONTH_BILL_ID > 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--區(qū)縣指標(biāo)
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? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--客戶經(jīng)理指標(biāo)
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;? ? ? --執(zhí)行sql,得到完成值kpi_value
EXCEPTION
WHEN OTHERS
THEN
RESULT_STR :=
RESULT_STR
|| '
sql執(zhí)行錯(cuò)誤:'
|| TVALUE_SQL
|| ' INTO KPI_VALUE';
END;
--一些sql邏輯,含dml語(yǔ)句
COMMIT;
END;
關(guān)鍵語(yǔ)句:EXECUTE IMMEDIATE TVALUE_SQL INTO KPI_VALUE;
本項(xiàng)目涉及到的知識(shí)點(diǎn):
1)在該示例中,需要把查詢的值動(dòng)態(tài)賦值給一個(gè)變量。注意變量的賦值不是在sql字符串中去拼湊,而是在執(zhí)行sql字符串時(shí)在末尾加入 INTO VAL
2)如果要通過(guò)查詢方式調(diào)用函數(shù),同時(shí)函數(shù)中包含DML 語(yǔ)句時(shí),在聲明函數(shù)需要加入 PRAGMA AUTONOMOUS_TRANSACTION;
查詢調(diào)用函數(shù)示例: SELECT YOUR_FUN(VAL1,VAL2...)? FROM DUAL;
3)如果函數(shù)聲明中含有 PRAGMA AUTONOMOUS_TRANSACTION; 則在函數(shù)結(jié)尾加入commit 或 rollback
關(guān)聯(lián)閱讀:ORA-14551: 無(wú)法在查詢中執(zhí)行 DML 操作
總結(jié)
以上是生活随笔為你收集整理的oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言中把时间拷到字符串中,C语言中将日
- 下一篇: 自动填充html_第 11 篇:自动生成