2011-11-15 55 views
0

我使用Visual Studio 2010爲返回多行的某些存儲過程創建數據庫單元測試。在SQL Server中很容易,我只是執行了存儲過程(EXEC MyProcedure 9999),並且行自動返回,因此我可以使用測試設計器來檢查結果集。使用Visual Studio 2010單元測試Oracle存儲過程

現在我正在嘗試爲Oracle編寫相同的測試;但是,Oracle存儲過程使用遊標輸出參數來返回結果。例如存儲過程的簽名是這樣的:

PROCEDURE MyProcedure 
(
    v_ItemId IN NUMBER, 
    io_cursor IN OUT t_cursor 
) AS... 

,因爲它需要一個指針作爲參數,我需要聲明一個在我的測試。看着張貼在這一主題的其他問題,我能夠創造這樣的:

DECLARE 
    refcsr SYS_REFCURSOR; 
BEGIN 
    MyProcedure (9999, refcsr); 
END; 

我知道refcsr包含我的結果,但我的問題是如何讓我的光標的內容可見的設置結果Visual Studio測試框架?

回答

0

像這樣的事情

variable x refcursor 
exec MyProcedure(9999, :x) 
print x 
+0

它可能是我完全沒有與Oracle的知識,但我已經試過了,我永遠無法得到甲骨文接受的語法。以第一行爲例,'variable x refcursor'給了我'ORA-00900:無效的SQL語句'。 – user171197

+0

以上需要在sqlplus中運行。我假設你想把它作爲一個單元測試來運行。 SQL腳本最適合執行此任務。 – steve

+0

我正在使用Visual Studio中的單元測試框架,它通過ODP.NET連接到數據庫。 – user171197