【发布时间】:2014-12-30 11:32:03
【问题描述】:
我是 Oracle 和存储过程的新手。我只是想知道它是否可以像在 SQL Server 中一样,将带有字段名称的记录集返回给外部程序。我阅读了一些文档,但我不确定我是否走在正确的轨道上。当我使用 Sys_Refcursor 时,我只能返回一个字段,而不是我想要的那么多。
我需要返回多个字段名称,并且我只有一个输入参数。
在程序的文档中,我有一个 SQL Server 示例,我希望我的 Oracle 存储过程也有同样的示例:
Use
Go
Set Ansi_Nulls ON
Go
Alter Procedure
@InputLocation Varchar(255)
As
Begin
Set Nocount On;
select FirstName as '@FirstName', Company as '@Company' from dbo.company where Location = @InputLocation
End
有什么建议吗?如果您需要一些其他信息,请告诉我。谢谢。
/编辑:
我的示例代码(第一步没有使用输入参数,只是为了生成输出看看是否有效):
create or replace
PROCEDURE TEST_PROZEDUR1 (
Input_Location IN Varchar2,
First_Name OUT SYS_Refcursor,
Company OUT Sys_Refcursor) IS
BEGIN
open First_Name For Select FirstName from dbo.company;
open Company For Select Company from dbo.company;
END TEST_PROZEDUR1;
【问题讨论】:
-
sys_refcursor将产生任何查询的结果,这里的一个字段是什么意思。参考oracle-base.com/articles/misc/… -
示例中的字段是“@Firstname”和“@Company”(在 Oracle 中,:Firstname, :Company)。调用程序需要带有字段的记录集。如果我返回其中一个,它可以工作,但如果我返回两个,我只会得到我的代码中提到的第一个。在 SQL Developer 中,我可以看到这两个变量。可以理解吗?
-
在 Plsql 上发布您的示例代码,这可能有助于回答
-
我在上面编辑了我的问题。谢谢
标签: oracle stored-procedures recordset