有没有大佬帮帮忙啊,我这个问题看不懂啊

xibudefangniuwa 2018-11-29 12:56:01
调用 'UP_GRADUATECHECKONE' 时参数个数或类型错误
这是我的存储过程定义

这是我的后台代码

int result = 0;
int rowsAffected;
OracleParameter[] parameters = {
new OracleParameter("var_XH", OracleDbType.NVarchar2,50),
new OracleParameter("var_SHID", OracleDbType.NVarchar2,50),
new OracleParameter("var_SHSJ", OracleDbType.NVarchar2,50) };
parameters[0].Value = XH;
parameters[1].Value = SHID;
parameters[2].Value = SHSJ;
result= DbHelperOra.RunProcedure("CQLG_BYGL.UP_GRADUATECHECKONE()", parameters, out rowsAffected);
return result;

调用时报错

能帮我看一下是什么问题吗
...全文
347 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
theFish2017 2018-11-29
  • 打赏
  • 举报
回复
proc 后去掉()
  • 打赏
  • 举报
回复
为什么你的存储过程名前面要有CQLG_BYGL.,这个是什么?schedules?
  • 打赏
  • 举报
回复
Oracle 系统的异常信息总是有一些误导,例如 sql 语法中大小写字母没写对(该大写的字母写成小写字母了),或者是多个什么符号之类的,都可能报告“参数个数错误”。
  • 打赏
  • 举报
回复
你不妨按照普通的 ado.net 调用存储过程的通用代码来写一下测试程序,其实写出来的代码也比你的 SQLHelper 还简单一些。然后对比一下就知道你的 SQLHelper 哪里写错了。
xibudefangniuwa 2018-11-29
  • 打赏
  • 举报
回复
xibudefangniuwa 2018-11-29
  • 打赏
  • 举报
回复
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected )
		{
			using (OracleConnection connection = new OracleConnection(connectionString))
			{
				int result;
				connection.Open();
				OracleCommand command = BuildIntCommand(connection,storedProcName, parameters );
				rowsAffected = command.ExecuteNonQuery();
				result = (int)command.Parameters["ReturnValue"].Value;
				//Connection.Close();
				return result;
			}
		}
		
		/// <summary>
		/// 创建 OracleCommand 对象实例(用来返回一个整数值)	
		/// </summary>
		/// <param name="storedProcName">存储过程名</param>
		/// <param name="parameters">存储过程参数</param>
		/// <returns>OracleCommand 对象实例</returns>
		private static OracleCommand BuildIntCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters)
		{
			OracleCommand command = BuildQueryCommand(connection,storedProcName, parameters );
			command.Parameters.Add( new OracleParameter ( "ReturnValue",
                OracleDbType.Int32, 4, ParameterDirection.ReturnValue,
				false,0,0,string.Empty,DataRowVersion.Default,null ));
			return command;
		}
private static OracleCommand BuildQueryCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters)
		{			
			OracleCommand command = new OracleCommand( storedProcName, connection );
			command.CommandType = CommandType.StoredProcedure;
			foreach (OracleParameter parameter in parameters)
			{
				command.Parameters.Add( parameter );
			}
			return command;			
		}
  • 打赏
  • 举报
回复
那么贴出你的 DbHelperOra 相关源代码,以及调试画面。 它可能不是规范正确的使用 ado.net 的设计代码。
xibudefangniuwa 2018-11-29
  • 打赏
  • 举报
回复
不写括号就会提示不存在这个存储过程
  • 打赏
  • 举报
回复
不要写括号
xibudefangniuwa 2018-11-29
  • 打赏
  • 举报
回复
引用 1 楼 Top_小鑫 的回复:
不是已经说了吗?类型错误,你的时间用的int类型
我的时间不是nvarchar2这个类型的字符吗
Top_小鑫 2018-11-29
  • 打赏
  • 举报
回复
不是已经说了吗?类型错误,你的时间用的int类型

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧