【发布时间】:2014-02-25 04:28:38
【问题描述】:
我有一个返回SYS_REFCURSOR 的Oracle 存储过程。我想返回在存储过程中声明的自定义参数。现在,当我在我的应用程序(C#)中调用它时,它不会显示列名,而是给我命名为:B1、:B2.. 等。我该如何实现这一点。
甲骨文:
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;
但是我也得到了同样的结果
我尝试时未保存带有别名的查询。
【问题讨论】:
-
你能把你的c#代码放上来吗?
-
当我在我的 SqlNavigator 中运行它时,Oracle 本身给我的列名是 :B1,:B2 等
-
这可能是工具中引用的默认行为。你可以试试sqlplus
标签: c# sql oracle stored-procedures