问题标签 [sys-refcursor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
28331 浏览

oracle - 如何从 Oracle 函数返回 RefCursor?

我正在尝试执行一个用户定义的 Oracle 函数,该函数使用 ODP.NET 返回一个 RefCursor。这是功能:

我可以在 Toad 中调用这个函数(从 dual 中选择 func_test(7))并取回一个 CURSOR。但我需要使用 C# 和 ODP.NET 获取光标来填充数据集,但我不断收到 NullReferenceException -“对象引用未设置为对象的实例”。这就是我所拥有的:

我能够找到很多关于使用存储过程和 ODP.NET 的信息和示例,但对于从函数返回 RefCursors 来说却不是很多。

编辑: 我不想将输入参数显式添加到 OracleCommand 对象(即sqlCom.Parameters.Add("id", OracleDbType.Int32,ParameterDirection.Input).Value = 7;),因为这使得很难将其实现为通用 RESTful Web 服务,但我将其保留为最后的手段,但会使用存储过程。

任何帮助深表感谢!

0 投票
3 回答
39903 浏览

sql - 如何调用包中的函数

我正在执行以下操作,但它不起作用

我正在调用一个返回游标的函数,所以我猜"from dual"是问题所在

还有另一种方法吗?

0 投票
1 回答
7228 浏览

oracle - 在 oracle pl/sql 中将游标从内部过程返回到外部过程

我正在使用 oracle PL/SQL 过程。我在另一个过程中调用一个过程。我想将一个游标从嵌套过程返回到外部过程。这可能吗?它对程序有多大不利影响?

下面是调用结构:

0 投票
1 回答
40737 浏览

sql - Oracle EXECUTE IMMEDIATE 进入游标

我有一个存储过程,它使用EXECUTE IMMEDIATE命令来执行一个很长的字符串。我如何支持很长的字符串并将数据返回到 refcursor?

0 投票
2 回答
2141 浏览

oracle - 如果 Oracle ref cursor fetch 包含 1 个单条记录,则它会挂起

我现在有一个奇怪的问题,如果从只有 1 条记录的存储过程返回的 ref 游标,则 fetch 操作将挂起并冻结。存储过程执行非常快,只是获取过程挂起。如果 ref 游标有超过 1 条记录,那么一切都很好。以前有没有人有类似的问题?

Oracle 服务器是在 Linus 上运行的 11g。客户端是 Windows Server 2003。我正在使用 Windows Server 上的通用 Oracle sqlplus 工具对此进行测试。

任何帮助和意见将不胜感激。谢谢。

0 投票
2 回答
2894 浏览

oracle10g - 在 Pl/SQl 中使用带有 Refcursor 的 if 条件块

我创建了一个 RefCursor 类型的包。

我在我的存储过程中使用包。

代码如下所示:

我想在这个存储过程中使用两个 if 条件。

我是 Pl-Sql 的新手。

任何人都可以通过告诉我这个语法来帮助我。

谢谢

--

更新

谢谢贾斯汀(在这里回复),

但我想使用两个条件,如:

如果(标准 = '1')然后

// 一些查询;万一

如果(标准 = '2')然后

// 一些查询;

万一

我将传递参数标准的值。

根据条件的值,我想执行不同的查询。

0 投票
4 回答
6760 浏览

oracle - nhibernate,调用 Oracle 中返回 sys refcursor 的函数

我正在尝试使用返回 ref 光标的 nhibernate 调用函数(oracle),但是我对 hbm 文件没有成功,任何人都可以指导我。

如果我让它像<return class ...我收到配置错误一样。

我试过{ ? = call package.function(:a, :b, :c) as result from dual }了,即使这样也行不通。

0 投票
1 回答
3903 浏览

stored-procedures - 从存储过程中的 sys_refcursor 获取特定字段?

我在我的办公室运行 Oracle 9i 服务器。我正在研究将 sys_refcursor 作为输出参数传递给另一个包(以及其他输入参数)的过程。我能够将类型定义为被调用过程在游标中返回的各种列的记录。然后我可以用这样的代码循环:

有没有办法只拉一列而不必声明整个行类型?我试过类似的东西:

但这没有用。还有其他想法吗?

0 投票
1 回答
10785 浏览

oracle - 如何关闭 PL/SQL 中的返回游标?

我是 PL/SQL 的新手,我刚刚在学习过程中遇到了游标。我一直在看到具有类型OUT SYS_REFCURSOR的存储过程参数,据我所知,它的目的是“返回数据”,就像 C 语言中的指针一样。我想知道SYS_REFCURSOR如果程序必须打开它并且不能关闭它,谁会关闭它?(如果程序关闭了输出OUT SYS_REFCURSOR,则不会有任何数据返回)。

另外,我认为,依靠包含参数的存储过程以外的外部函数OUT SYS_REFCURSOR来关闭游标是不好的设计。有没有一种方法可以在不使用游标的情况下从存储过程中返回表?

0 投票
1 回答
29491 浏览

oracle - 如何使用 Ref Cursor 作为 C# 的 Out-parameter 调用 Oracle 函数?

我正在使用一种产品,该产品提供基于 Oracle 函数的数据库 API,并且我通常能够通过 ODP.NET 调用函数。但是,我不知道如何调用包含 Ref Cursor 作为 Out 参数的函数。到目前为止,我发现的所有示例要么调用具有 Out 参数的过程,要么调用具有 Ref Cursor 作为返回值的函数。我尝试类似地定义参数,但不断收到错误,即提供了错误数量或类型的参数。

这是函数头(显然是混淆的):

这些是“somepackage”中的类型定义:

这是我尝试过的代码:

我尝试了以下不同的方式来调用该函数(当然一次只有一种):

但是它们每个都失败并显示错误消息:

那么通常是否可以使用 ODP.NET 从 C# 调用具有 Ref Cursor 作为 Out-parameter 的函数?我可以使用 Varchar2-Out 参数而不是 Ref Cursor 调用具有相同结构的函数,而不会出现问题...

顺便说一句,我在 Visual Studio 2008 中使用 C#.NET 3.5 中的 ODP.NET 版本 2.112.2.0。

在此先感谢您的帮助!