为什么在调用程序包 PROC 时出现 PLS-00306:错误的参数数量或类型错误?
Why do I get the PLS-00306: wrong number or types of arguments error when calling a Package PROC?
这是我的包体方法的顶部:
PROCEDURE GetPortfolioAppsAndProjects
(
loginId IN VARCHAR2 := NULL,
portfolioId IN NUMBER := NULL,
portfolioType IN VARCHAR := NULL,
ic IN VARCHAR := NULL,
AppIds_CUR IN OUT SYS_REFCURSOR
)
IS
INVALID_PORTFOLIO_TYPE EXCEPTION;
BEGIN
当我从 PL/SQL 执行对话执行时,这个 运行 没问题。
不过,我需要能够从 SQL 查询 window 中 运行 并加入其他表以及不开发的内容。
我正在尝试从 Sql Window:
执行此 sql
DECLARE AppIds_CUR SYS_REFCURSOR;
BEGIN
IREPORT_PORTFOLIOS.GetPortfolioAppsAndProjects('EVANSF', null, null, null, :AppIds_CUR);
END;
我收到这个错误:
PLS-00306: wrong number or types of arguments in call to 'GETPORTFOLIOAPPSANDPROJECTS'
我算进来5个(包括一个IN OUT游标)。
在我的通话中,我传递了 5,包括光标。
如何将游标的结果获取到输出变量 window.
AppIds_CUR
在您的区块中本地声明;您不需要通过在前面加上冒号将其视为绑定变量:
DECLARE
AppIds_CUR SYS_REFCURSOR;
BEGIN
IREPORT_PORTFOLIOS.GetPortfolioAppsAndProjects('EVANSF', null, null, null, AppIds_CUR);
END;
如果你 运行 你在 SQL Developer 中的声明,它会提示你输入一个绑定值,这不是你想要发生的,并将其视为varchar 不是引用游标 - 因此错误类型错误。
使用这种方法,您需要遍历光标并使用 dbms_output
手动显示它的值。但是如果你 运行 它作为脚本,你可以使用绑定变量,通过声明类型 - 这将在块之外,所以你不需要 declare
:
variable AppIds_CUR REFCURSOR;
BEGIN
IREPORT_PORTFOLIOS.GetPortfolioAppsAndProjects('EVANSF', null, null, null, :AppIds_CUR);
END;
/
print AppIds_CUR
您可以使用 SQL 开发人员 print
命令显示光标内容。
这是我的包体方法的顶部:
PROCEDURE GetPortfolioAppsAndProjects
(
loginId IN VARCHAR2 := NULL,
portfolioId IN NUMBER := NULL,
portfolioType IN VARCHAR := NULL,
ic IN VARCHAR := NULL,
AppIds_CUR IN OUT SYS_REFCURSOR
)
IS
INVALID_PORTFOLIO_TYPE EXCEPTION;
BEGIN
当我从 PL/SQL 执行对话执行时,这个 运行 没问题。 不过,我需要能够从 SQL 查询 window 中 运行 并加入其他表以及不开发的内容。
我正在尝试从 Sql Window:
执行此 sqlDECLARE AppIds_CUR SYS_REFCURSOR;
BEGIN
IREPORT_PORTFOLIOS.GetPortfolioAppsAndProjects('EVANSF', null, null, null, :AppIds_CUR);
END;
我收到这个错误:
PLS-00306: wrong number or types of arguments in call to 'GETPORTFOLIOAPPSANDPROJECTS'
我算进来5个(包括一个IN OUT游标)。 在我的通话中,我传递了 5,包括光标。 如何将游标的结果获取到输出变量 window.
AppIds_CUR
在您的区块中本地声明;您不需要通过在前面加上冒号将其视为绑定变量:
DECLARE
AppIds_CUR SYS_REFCURSOR;
BEGIN
IREPORT_PORTFOLIOS.GetPortfolioAppsAndProjects('EVANSF', null, null, null, AppIds_CUR);
END;
如果你 运行 你在 SQL Developer 中的声明,它会提示你输入一个绑定值,这不是你想要发生的,并将其视为varchar 不是引用游标 - 因此错误类型错误。
使用这种方法,您需要遍历光标并使用 dbms_output
手动显示它的值。但是如果你 运行 它作为脚本,你可以使用绑定变量,通过声明类型 - 这将在块之外,所以你不需要 declare
:
variable AppIds_CUR REFCURSOR;
BEGIN
IREPORT_PORTFOLIOS.GetPortfolioAppsAndProjects('EVANSF', null, null, null, :AppIds_CUR);
END;
/
print AppIds_CUR
您可以使用 SQL 开发人员 print
命令显示光标内容。