我有一个Oracle存储过程,它返回SYS_REFCURSOR
。我想返回在存储过程中声明的自定义参数。现在,当我在我的应用程序(C#)中调用它时,它不会向我显示列名称,而是将其命名为:B1
,:B2
..等等。如何实现此目的。
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
,{{ 1}},P_AGE
或其他一些P_DOB
名称?可能吗? (如果您在alias
中创建,则相同的SELECT QUERY
将获得参数名称作为列名称
我已经尝试了
MSSQL
但是我也得到了相同的旧结果
在我做的时候,没有保存带有别名的查询。
答案 0 :(得分:1)
OPEN OUTPUT_DATA FOR
SELECT P_NAME as name ,P_AGE as age,P_DOB as dob FROM DUAL;
您可以通过sqlplus进行测试。
VARIABLE MYCUR refcursor;
EXEC URPROC (:MYCUR);
print MYCUR;
如果在查询中选择值而不是列名,则会错过别名。