我需要您的幫助.....我如何將多個值傳遞給函數中的單個參數?如何將多個值傳遞給數組參數函數
值'AAA 1','BBB 2','CCC 3''DDD 4'將被傳遞給相同的參數「v_type」,這些值將基於從下拉菜單前端屏幕。用戶可以從列表中選擇一個或多個值,並將這些值傳遞給過程,然後將過程傳遞給過程中SELECT語句的WHERE子句。
我的功能somenthing這樣的:
例
CREATE OR REPLACE FUNCTION FN_GET_ROWS
(v_date_ini IN DATE,
v_date_end IN DATE,
v_type IN VARCHAR2
)
RETURN TEST_TABTYPE
AS
V_Test_Tabtype Test_TabType;
BEGIN
SELECT TEST_OBJ_TYPE(DATE, NAME, ALERT)
BULK COLLECT INTO V_Test_TabType
FROM (select date, name, alert
from Table
where DATE BETWEEN v_date_ini AND v_date_end
AND Alert in (select REGEXP_SUBSTR (v_type, '[^,]+', 1, level)
from dual
connect by level <= length(regexp_replace(v_type,'[^,]*'))+1)
);
RETURN V_Test_TabType;
END;
搜索互聯網,我發現,也許一個VARRAY工作,但我不知道如何給它賦值給變量:類型與參數的用戶在屏幕上選擇。
我在數據庫上創建這種類型,我該如何使用它?我是一個新的plsql。
CREATE TYPE alert_obj AS OBJECT (type_alert VARCHAR2(60));
CREATE TYPE alert_varray_typ AS VARRAY(100) OF alert_obj;
感謝您的幫助
伊曼紐爾。
這些值將從哪裏傳遞 - 什麼是前端?你從哪種語言調用Oracle函數? (並且你也要返回一個集合?也許你想要一個ref cursor?) –
嗨Alex,前端是BI發佈者11,數據集的查詢是: SELECT * FROM TABLE(FN_GET_ROWS(:date_ini,: date_end,:type)); 問題是,當BI Publisher通過參數時,似乎是這樣:鍵入它將每個逗號解釋爲單獨的參數,因此我得到的參數數量無效錯誤。 如果選擇的值不是錯誤,然後選擇兩個錯誤值:ORA-06553:PLS-306:調用'FN_GET_ROWS'時參數的數量或類型錯誤 –