gpt4 book ai didi

oracle - 不带参数调用 Oracle 存储过程

转载 作者:行者123 更新时间:2023-12-04 00:47:19 32 4
gpt4 key购买 nike

我正在尝试调用不接受任何输入参数的 Oracle 存储过程。但是,在运行该过程时,我收到一条错误消息,指出

PLS-00306: wrong number or types of arguments in call to 'MY_PROC'

要调用过程,我只需在 TOra 中输入以下文本:

BEGIN
SCHEMA.MY_PROC();
END;

我也试过(虽然同样的错误)

EXEC  SCHEMA.MY_PROC();

我熟悉 MSSQL,并且能够使用 SQL Server 毫无问题地执行 SP,但我不知道如何使用 Oracle 执行相同的操作。我无法查看存储过程的实际代码,但从我拥有的有限文档来看,它似乎不接受任何输入参数并且返回值是一个引用游标。我觉得我需要以某种方式传入一个引用游标,但我在这方面所做的一切尝试都没有奏效。

我只想查看 SP 的结果,就像我执行了一个 SELECT 语句一样,也就是说,记录填充了 TOra 界面结果面板中的数据网格。

最佳答案

听起来过程确实有一个 OUT 参数(在 Oracle 中,过程不返回任何东西,但可以有 OUT 和 IN OUT 参数,函数返回一些东西)。因此,您必须为该 OUT 参数传入一个变量。有点像

DECLARE
l_results SYS_REFCURSOR;
BEGIN
schema.my_proc( l_results );
END;

应该成功调用该过程。但随后您希望 GUI 显示该光标的结果。不幸的是,这变得有点复杂,因为现在您正在谈论特定于 GUI 的问题。

我不使用 TOra,所以我不知道您需要在 TOra 中做什么才能显示光标。在 SQL*Plus(或 SQL Developer,Oracle 的免费 G​​UI)中,您可以执行如下操作

create or replace procedure my_proc( p_rc OUT SYS_REFCURSOR )
as
begin
open p_rc
for select 1 col1
from dual;
end;
/

variable rc refcursor;
exec my_proc( :rc );
print rc;

这将创建一个带有 OUT 参数(游标)的存储过程,声明一个可以传入的主机变量,然后打印结果。

关于oracle - 不带参数调用 Oracle 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752231/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com