引用游标不从StoredProcedure返回列名?

时间:2014-02-25 04:28:38

标签: c# sql oracle stored-procedures

我有一个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

但是我也得到了相同的旧结果


  

在我做的时候,没有保存带有别名的查询。

1 个答案:

答案 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;

如果在查询中选择值而不是列名,则会错过别名。