我想实现如下:
CREATE OR REPLACE PROCEDURE INPUT_XML (v_sne_id varchar2(10) -- input can be single or multiple values,
v_card_name varchar2(10) DEFAULT NULL,
v_port_no varchar2(10) DEFAULT NULL,
v_refcur OUT SYS_REFCURSOR)
AS
BEGIN
IF (card_name is null and port_no is null )
then
open v_refcur for
select * from table where sne_id in (all the input sneId(s) );
end if;
END INPUT_XML:
答案 0 :(得分:3)
您可以使用TYPE
函数创建和使用用户定义的集合TABLE
。
类型
CREATE OR REPLACE TYPE sne_id_type IS TABLE OF varchar2(10);
程序
CREATE OR REPLACE PROCEDURE input_xml (
v_sne_id sne_id_type, --use the parameter of the collection type
v_card_name VARCHAR2 DEFAULT NULL,
v_port_no VARCHAR2 DEFAULT NULL,
v_refcur OUT SYS_REFCURSOR
) AS
BEGIN
IF ( v_card_name IS NULL AND v_port_no IS NULL ) THEN
OPEN v_refcur FOR SELECT *
FROM tablename
WHERE sne_id IN ( SELECT column_value
FROM TABLE ( v_sne_id )
);
END IF;
END input_xml;
/
要在执行时传递多个值,可以这样做
BEGIN
INPUT_XML(sne_id_type('ID1','ID2','ID3'), 'CARD', null,null);
END;
/