我有一個Oracle存儲過程,它返回一個SYS_REFCURSOR
。我想返回在存儲過程中聲明的自定義參數。現在,當我在我的應用程序(C#)中調用它時,它不會顯示列名稱,而是它給我命名爲:B1
,:B2
..等等。我如何實現此目的。Ref cursor沒有從StoredProcedure返回列名?
ORACLE EG:
CREATE PROCEDURE usp_MyStoredProcedure
(
OUTPUT_DATA OUT SYS_REFCURSOR
)
IS
P_NAME VARCHAR2;
P_AGE VARCHAR2;
P_DOB VARCHAR2;
BEGIN
SELECT NAME INTO P_NAME FROM TABLE1;
SELECT AGE INTO P_AGE FROM TABLE2;
SELECT DOB INTO P_DOB FROM TABLE3;
OPEN OUTPUT_DATA FOR
SELECT P_NAME,P_AGE,P_DOB FROM DUAL;
END;
現在,當我執行上面的代碼我得到的列名:B1
,:B2
,:B3.
我怎樣才能得到列名P_NAME
,P_AGE
,P_DOB
或其他一些alias
名字呢?它可以嗎? (同樣的SELECT QUERY
如果您在MSSQL
創建你將得到的參數名稱作爲列名)
我已經嘗試過
SELECT P_NAME as Name,P_AGE as Age,P_DOB as DOB FROM DUAL;
但後來也我得到同樣的老結果
當我嘗試時,ALIAS名稱的查詢並未保存。
你可以把你的C#代碼來獲取? –
當我在SqlNavigator中運行它時,Oracle自己給我的列名稱爲:B1,:B2等 – smilu
這可能是此工具中refcursors的默認行爲。你可以試試sqlplus –