问题描述
我写了一个存储过程:ALTERPROCEDUREPostArticle(@titlevarchar(50),@contenttext,@father_idint,@userNamevarchar(50))ASinsertintoArticle(title,content,father_id,author_id)values(@title,@content,@father_id,dbo.GetUserId(@userName))RETURN(@@identity)//或用selectmax(id)fromArticle然后我在.cs代码里调用传出来的值SqlParameterparm=cmd.Parameters.Add("@returnId",SqlDbType.Int);parm.Direction=ParameterDirection.Output;intreturnArtId=Convert.ToInt32(cmd.Parameters["@returnId"].Value);returnreturnArtId;但是,编译时出错,说Convert.ToInt32(cmd.Parameters["@returnId"].Value)这里参数不对,怎么回事呢???
解决方案
解决方案二:
学习
解决方案三:
你的存储过程当中并没有声明["@returnId"]这个输出参数,所以你在提取时肯定会出错可以试试把在存储中修改ALTERPROCEDUREPostArticle(@titlevarchar(50),@contenttext,@father_idint,@userNamevarchar(50),@returnIdint)ASinsertintoArticle(title,content,father_id,author_id)values(@title,@content,@father_id,dbo.GetUserId(@userName))select@returnId=max(id)fromArticle
然后面前台代码中直接采用获取参数的方法获取其值SqlParameterparm=cmd.Parameters.Add("@returnId",SqlDbType.Int);parm.Direction=ParameterDirection.Output;intreturnArtId=Convert.ToInt32(cmd.Parameters["@returnId"].Value);returnreturnArtId;
问题应该可以解决
解决方案四:
你的存储过程里没有@returnId这个参数
解决方案五:
parm.Direction=ParameterDirection.ReturnValue;改成这样````你没设置输出参数``只有返回的值
解决方案六:
ALTERPROCEDUREPostArticle(@titlevarchar(50),@contenttext,@father_idint,@userNamevarchar(50),@returnIdintoutput)ASinsertintoArticle(title,content,father_id,author_id)values(@title,@content,@father_id,dbo.GetUserId(@userName))set@returnId=@@identity
解决方案七:
楼上正解
解决方案八:
QQ群:323373