我需要您的帮助.....我如何将多个值传递给函数中的单个参数?如何将多个值传递给数组参数函数
值'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'时参数的数量或类型错误 –