.net调用oracle存储过程返回值时遇到的问题
来源:互联网 发布:php mongodb 关闭连接 编辑:程序博客网 时间:2024/06/06 18:05
最近在用动软生成的oracle代码的时候遇到了返回值的问题。我们知道,oracle存储过程中要返回值不能用return,只能定义一个out类型的参数,比如:。我的oracle存储过程代码如下:
CREATE OR REPLACE PROCEDURE UP_ORACESHI_ADD (
USERNAME_in varchar2,
PASSWORD_in varchar2,
falg out NUMBER --这里是返回值
)
IS
BEGIN
INSERT INTO ORACESHI(
USERNAME,PASSWORD
) VALUES(
USERNAME_in ,PASSWORD_in
);
if SQL%ROWCOUNT>0 THEN --判断,如果sql语句受影响的行数大于0,就返回1,否则就返回0
falg:=1;
ELSE
falg:=0;
END IF;
END UP_ORACESHI_ADD;
从语句上看没什么问题呀,C#执行这个存储过程的时候报错:
PLS-00222: 在此范围中不存在名为 'UP_ORACESHI_ADD'的函数
经过检查:发现是DBUtility里的DbHelperOra类里的处理存储过程返回值的BuildIntCommand()方法有问题。大家知道ORACLE存储过程是没有返回值的,要返回只能定义一个out参数来解决。
所以BuildIntCommand()方法要这样改才行:
command.Parameters.Add(new OracleParameter("out参数",
OracleType.Number, 4, ParameterDirection.Output,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
同理RunProcedure()方法只能这样改:
result = Convert.ToInt32(command.Parameters["falg"].Value);
我还发现在转换字符串的时候,这里同样是object类型,要转换成int类型,是不能用(int)的,而要用Convert.ToInt32(),否则会报错。
还有一点要注意的是:在DAL的部分,用到new OracleParameter()字段的部分时不用在这里定义out参数了。
- .net调用oracle存储过程返回值时遇到的问题
- 用.NET调用oracle的存储过程返回记录集
- 用.NET调用oracle的存储过程返回记录集
- ORACLE存储过程调用存储过程时commit的问题
- hibernate调用oracle的带有返回值的存储过程
- asp.net调用带返回值参数的存储过程
- .Net 调用存储过程取到return的返回值
- java调用有返回值的oracle存储过程
- VBA调用带游标返回值的ORACLE存储过程
- java调用oracle带有返回值的存储过程
- java调用ORACLE 存储过程返回值
- ado.net oledb 调用oracle存储过程返回结果集
- 用.NET调用Oracle存储过程返回记录集
- 用.NET调用oracle存储过程返回记录集
- .net 调用oracle存储过程返回多个记录集
- ASP.NET调用oracle存储过程返回多个游标
- 用.NET调用Oracle存储过程返回记录集
- Oracle 存储过程遇到的问题
- 移植x264过程记录1
- 深圳——经历磨练
- MyEclipse 8.5 快捷键
- jQuery 学习笔记
- VC++常用数据类型及其操作详解
- .net调用oracle存储过程返回值时遇到的问题
- Linux系统密码忘记后的五种恢复方法
- MFC 在对话框显示图片的多种方法
- VC++.NET中字符串之间的转换
- 从键盘驱动分析wince中断机制
- 解决jsp页面table TD列字符不能自动换行
- CListCtrl使用详解
- makefile 编写
- VC++实现单文档程序的全屏显示及恢复