我似乎无法运行一个包含存储过程的包,该存储过程包含两个参数,并根据这些参数输出一个表。目标是创建一个存储过程,该存储过程接受输入new_date和new_entity,并从表中返回与这些值匹配的数据。
CREATE OR REPLACE PACKAGE test1 IS
PROCEDURE stored_proc (new_date IN VARCHAR2, new_entity IN VARCHAR2, output OUT SYS_REFCURSOR);
END;
CREATE OR REPLACE PACKAGE BODY test1 IS
PROCEDURE stored_proc (new_date IN VARCHAR2, new_entity IN VARCHAR2, output OUT SYS_REFCURSOR) IS
BEGIN
OPEN output FOR select * FROM atlas_report_dates
WHERE report_date = TO_DATE(new_date,'mm/dd/yyyy') AND entity = new_entity;
END;
END;
BEGIN
test1.stored_proc('6/12/2023', 'MLFS');
END;
字符串
我收到错误ORA-06550、PLS-00306、ORA-06550
1条答案
按热度按时间irlmq6kh1#
您的过程很好(您只需要确保在
END;
语句后的新行上使用/
终止符终止PL/SQL块)。用于调用过程的匿名块不正确,因为过程有三个参数,而您只提供了两个参数。您需要为
OUT
参数提供游标参数。字符串
然后:
型
工作(但不做任何事情,因为你没有告诉它如何处理光标)。
更好的方法是使用列数据类型并将日期作为日期(而不是字符串)传递:
型
然后你可以调用它使用:
型
示例表的输出为:
型
fiddle