使用c#从oracle数据库中获取数据 [英] Fetching data from oracle database using c#
本文介绍了使用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屋!
查看全文