C#学习教程:如何在oracle中将参数输出为varchar2程序USP_1(SP_NUMOUTVARCHAR2);结束P_1;创建或替换程序包主体P_1作为过程USP_1(SP_NUMOUTVARCHAR2)ISBEGINSELECTto_char(concat(to_char(sysdate,'yyyymm'),to_char("ActionId".nextval,'000')))INTOSP_NUMFROMdual;结束USP_1;结束P_1;我的后端代码正在使用(OracleConnectionoracleConnection=newBaseRepository().Connection){oracleConnection.Open();OracleCommand命令=newOracleCommand("P_1.USP_1",oracleConnection);命令.CommandType=System.Data.CommandType.StoredProcedure;command.Parameters.Add("SP_NUM",OracleDbType.Varchar2,50,System.Data.ParameterDirection.Output);命令.ExecuteNonQuery();//异常出现在这一行varNumber=Convert.ToInt32(command.Parameters["SP_REQ_NUM"].Value.ToString());这是我得到的例外。ORA-06502:PL/SQL:数字或值错误我不知道我做错了什么。OracleParameterCollection.Add方法的重载次数不少于10次。看起来你不小心打错了字。我相信您想要的是Add(string,OracleDbType,int,object,ParameterDirection),在这种情况下,您只是缺少对象参数的值。此参数应包含您正在使用的Oracle参数的初始值。但是,在您的情况下,初始值并不重要,因为它是一个out参数。在50之后添加null,您的存储过程调用应该会成功。您正在调用Add(string,OracleDbType,object,ParameterDirection)。大小50已被解释为参数的初始值。我不确定如何解释Oracle返回的错误(“数字或值错误”)——这对我来说意味着Oracle试图将字符串转换为数字但失败了。也许50的值会覆盖OracleDbType.Varchar2类型,因此Oracle需要数字而不是字符串?又发现了几个问题:以上是C#学习教程:HowdoIuseparametersasvarchar2outputinoracle分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
