C#执行Oracle存储过程 报Oracle-06550错误解决方法
来源:互联网 发布:jpg文件数据恢复 编辑:程序博客网 时间:2024/05/21 22:22
用代码说明解决方法.
在Oracle有一个存储过程,在用Oracle工具(Quest Toad)调试执行时没有任何问题,当在C#中调用此过程报Oracle-06550错误.
一般的此存储过程具有调用参数.
具体代码:
Oracle后台的存储过程代码:
Create Or Replace Procedure Lungu.Pro_Alert_Lunguid(In_LunguID varchar2)
Is
---Local Var定义区
Var_Sequence Number;
N Number;
N1 Number;
N2 Number;
NN number;
/******************************************************************************/
Begin
If(In_Lunguid <>' ') Then
Select Count(*) Into N From Robot_Alart_R2_Lunguid Where Lunguid=In_Lunguid;
If(N>=1) Then
Update Robot_Alart_R2_Lunguid Set Alert_Flag = '1' Where Lunguid=In_Lunguid;
End If;
select count(*) into NN From R2_Plan
Where State_Of_Order<>'4' ;
if(NN>=1) then
Var_Sequence := To_Number(Substr(In_Lunguid,5));
For Cc In
(
Select Plan_Order_Id,Prodord_Id,Acual_Output,State_Of_Order From R2_Plan
Where State_Of_Order<>'4' Order By Start_Date Desc
)
Loop
N1:=To_Number(Substr(Cc.Prodord_Id,5,5));
N2:=N1+Cc.Acual_Output;
If(Var_Sequence>=N1) And (Var_Sequence<=N2) Then
Select Count(*) Into N From R2_Plan Where Prodord_Id=Cc.Prodord_Id;
If(N>=1) Then
If(Cc.State_Of_Order='2') Then
Update R2_Plan Set State_Of_Order = '4'
Where Prodord_Id<Cc.Prodord_Id
And State_Of_Order='3';
Update R2_Plan Set State_Of_Order = '3'
Where Prodord_Id=Cc.Prodord_Id;
End If;
End If;
End If;
End Loop ;
end if;
End If;
Exception
When Others Then
-- Consider Logging The Error And Then Re-Raise
Raise;
End Pro_Alert_Lunguid;
此过程在Oracle中执行没有任何问题.
在C#中的调用代码:
using (OracleConnection tmpOraConn = new OracleConnection(this.oraConn.ConnectionString))
{
tmpOraConn.Open();
OracleCommand tmpCmd = tmpOraConn.CreateCommand();
tmpCmd.CommandText = "Pro_ALERT_LUNGUID";
tmpCmd.CommandType = CommandType.StoredProcedure;
tmpCmd.Parameters.Add("LunguID", OracleType.NVarChar);
tmpCmd.Parameters["LunguID"].Direction = ParameterDirection.Input;
tmpCmd.Parameters["LunguID"].Value = this.initialLunguID;
try
{
tmpCmd.ExecuteNonQuery();
}
catch (OracleException oe)
{
string errorMsg = oe.Message;
}
finally
{
tmpOraConn.Close();
tmpCmd = null;
}
执行此段代码就会报Oracle-06650错误.
解决办法:
注意到Oracle存储过程Pro_Alert_Lunguid(In_lunguId in varchar2)中的参数名为in_lunguID.
而在C#中 tmpCmd.Parameters.Add("LunguID", OracleType.NVarChar);中添加的参数名为LunguID.问题就出在这儿. 要保持C#中添加的参数名和Oracle中后台存储过程名一致(也就是两个的参数名一样)
只要将上面的C#中的代码 tmpCmd.Parameters.Add("LunguID", OracleType.NVarChar);改为
tmpCmd.Parameters.Add("In_LunguID", OracleType.NVarChar);即可.当然也可以将Oracle的存储过程的参数从
in_Lunguid改为--->lunguID.
- C#执行Oracle存储过程 报Oracle-06550错误解决方法
- oracle执行存储过程
- oracle 存储过程执行
- C#中用Oracle 执行存储过程返回DataSet报[ORA-08103: 对象不再存在]解决方案
- oracle执行存储过程报错:ORA-12011
- oracle 存储过程执行报错ORA-12828
- C# oracle 存储过程
- oracle存储过程报"无效的列索引"的错误
- oracle实现自动记录存储过程、自定义函数执行错误
- c# 执行ORACLE存储过程并返回行数
- C#中执行包含ORACLE CLOB类型存储过程
- C#执行oracle返回游标类型的存储过程
- C#中用Oracle 执行存储过程返回DataSet
- C#与Oracle开发中执行存储过程问题
- oracle中执行存储过程
- oracle中执行存储过程
- 定时执行Oracle存储过程
- oracle 定时执行存储过程
- 今日开通CSDN的博客
- norflash &nandflash基址问题
- 超级热门组合:Atom加Win7今年内亮相
- extern的作用
- hibernate实体映射
- C#执行Oracle存储过程 报Oracle-06550错误解决方法
- eclips项目有红叉,但内容里却没红叉的解决办法
- 计算机教程
- 计算机视频
- jsp开发环境的搭建(2)如何将tomcat的默认页转成自定义的首页
- 大家好,这是BooguNote官方中文博客
- 心情不好的时候瞅瞅
- C++虚表
- HttpClient重定向