使用c#从oracle数据库中获取数据 [英] Fetching data from oracle database using c#

查看:967
本文介绍了使用c#从oracle数据库中获取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我从oracle获取数据的代码:



.Net语句------

 OracleConnection oracleConnection =  new  OracleConnection(  ---- ---- ConnectionString中); 
OracleCommand cmd = new OracleCommand();
// 为存储过程创建命令

cmd .Connection = oracleConnection;
cmd.CommandText = REPORT.SP_SUBREPORT;
cmd.CommandType = CommandType.StoredProcedure;


// cmd.Parameters.Add(Id,OracleType。数字).Value = 26;
cmd.Parameters.Add( Id,OracleType.Number).Value = 26 ;
cmd.Parameters.Add( returndata,OracleType.Cursor).Direction =
ParameterDirection.Output;


OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);









Oracle查询 - - :

  CREATE   REPLACE PACKAGE REPORT  AS  
TYPE T_CURSOR IS REF CURSOR ;
PROCEDURE SP_SUBREPORT

ScoreCardMetricId IN NUMBER,
returndata OUT T_CURSOR
);
END 报告;

CREATE REPLACE PACKAGE BODY REPORT AS
PROCEDURE SP_SUBREPORT

ScoreCardMetricId IN NUMBER,
returndata OUT T_CURSOR

IS
BEGIN
OPEN returndata FOR
SELECT - ---------长语句清单--- -WHERE ID = Id ORDER BY --- statement ----;

END SP_SUBREPORT;
END 报告;







我收到以下错误 - :

 {System.Data.OracleClient.OracleException(0x80131938):ORA-04063:
ORA-06508:PL / SQL:找不到被调用的程序单元:
ORA-06512:第1行

解决方案

快速谷歌PL / SQL:无法找到被调用的程序单元之后,似乎在连接字符串指定的数据库中找不到您指定为存储过程的名称。

Below is my code for fetching data from oracle-:

.Net statement------

OracleConnection oracleConnection = new OracleConnection("----connectionstring----");
        OracleCommand cmd = new OracleCommand();
        // create the command for the stored procedure

        cmd.Connection = oracleConnection;
        cmd.CommandText = "REPORT.SP_SUBREPORT";
        cmd.CommandType = CommandType.StoredProcedure;


        //cmd.Parameters.Add("Id", OracleType.Number).Value = 26;
        cmd.Parameters.Add("Id", OracleType.Number).Value = 26;
        cmd.Parameters.Add("returndata", OracleType.Cursor).Direction =
            ParameterDirection.Output;


        OracleDataAdapter da = new OracleDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);





Oracle query---:

CREATE OR REPLACE PACKAGE REPORT AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE SP_SUBREPORT
(
    ScoreCardMetricId IN NUMBER,
    returndata OUT T_CURSOR
);
END REPORT;

CREATE OR REPLACE PACKAGE BODY REPORT AS
PROCEDURE SP_SUBREPORT
(
    ScoreCardMetricId IN NUMBER,
    returndata OUT T_CURSOR
)
IS
BEGIN
    OPEN returndata FOR
    SELECT    -----------long list of statement----WHERE     ID = Id ORDER BY ---statement----;

END SP_SUBREPORT;
END REPORT;




I am getting below error-:

{System.Data.OracleClient.OracleException (0x80131938): ORA-04063: 
ORA-06508: PL/SQL: could not find program unit being called: ""
ORA-06512: at line 1

解决方案

After a quick Google for "PL/SQL: could not find program unit being called" it seems that the name you specified as a stored procedure could not be found in the database specified by the connection string.


这篇关于使用c#从oracle数据库中获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆