我正在为 SSRS 将一些 SQLServer 报告转换为 Oracle,并让第一个报告正常工作。
现在我正在研究第二个,唯一的区别是它有输入参数。当我将这些参数添加到 SP 中时,它会返回一个 ref 游标。当我将它们取出并进行选择时,它会返回数据。
create or replace PROCEDURE "getGriefDetails" (o_rc OUT sys_refcursor, inSource IN VARCHAR2,
inTable IN VARCHAR2, inCategory in VARCHAR2) AS
BEGIN
open o_rc for
Select * from ERRORDATALOG
WHERE (((inSource = 'ALL') AND (SOURCESYSTEM like '%')) OR (SOURCESYSTEM = inSource))
AND
(((inTable = 'ALL') AND (TABLENAME like '%')) OR (TABLENAME = inTable))
AND
(((inCategory = 'ALL') AND (GRIEFTYPE like '%')) OR (GRIEFTYPE = inCategory))
Order By SOURCESYSTEM, GRIEFTYPE, TABLENAME;
end;
当这是存储过程时,我得到了这个结果
但是,当我这样做时
create or replace PROCEDURE "getGriefDetails" (o_rc OUT sys_refcursor, inSource IN VARCHAR2,
inTable IN VARCHAR2, inCategory in VARCHAR2) AS
BEGIN
open o_rc for
Select * from ERRORDATALOG;
end;
我得到数据。唯一的区别是我有一个带参数的 where 子句。我没有正确设置我的光标吗?