我是Oracle和存儲過程的新手。我只是想知道它是否有可能(例如在SQL Server中)將字段名稱的記錄集返回給extern程序。我讀了一些文件,但我不確定我是否在正確的軌道上。當我使用Sys_Refcursor時,我只能返回一個字段,而不是我想要的那樣多。Oracle存儲過程返回字段名稱的記錄集
我需要返回多個字段名稱,我有一個輸入參數。
在程序的文檔,我對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'會導致任何查詢的結果,這裏你說的是一個字段。請參考http://oracle-base.com/articles/misc/using-ref-cursors-to-return-recordsets.php – Exhausted
這個例子中的字段是'@Firstname'和'@Company'(在Oracle中:名字,:公司)。調用程序需要帶字段的記錄集。如果我返回其中的一個,它會起作用,但是如果我將它們都返回,我只能得到我的代碼中提到的第一個。在SQL Developer中,我可以看到兩個變量。這是可以理解的嗎? – triplus
在Plsql上發佈你的示例代碼可能有助於回答 – Exhausted