从storeprocedure获取输出时获取将varchar转换为int的错误? [英] Getting error converting varchar to int while getting output from storeprocedure?

查看:98
本文介绍了从storeprocedure获取输出时获取将varchar转换为int的错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码

My code

Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConString").ConnectionString
       Dim conn As New SqlConnection(connectionString)
       Dim cmd As New SqlCommand(query, conn)
       cmd.CommandType = CommandType.StoredProcedure
       cmd.Parameters.AddWithValue("@fName", txtFirstName.Text)
       cmd.Parameters.AddWithValue("@Lname", txtLName.Text)
       cmd.Parameters.AddWithValue("@Sex", CBSex.SelectedItem.ToString)
       cmd.Parameters.AddWithValue("@DOB", Convert.ToDateTime(DTDOB.Text))
       cmd.Parameters.AddWithValue("@Age", txtAge.Text)
       cmd.Parameters.AddWithValue("@Address", txtAddress.Text)
       cmd.Parameters.AddWithValue("@phno", txtPhNo.Text)
       cmd.Parameters.AddWithValue("@Email", txtEmail.Text)
       cmd.Parameters.AddWithValue("@IdNo", txtIDNo.Text)
       cmd.Parameters.AddWithValue("@contactPerson", txtContactPerson.Text)
       cmd.Parameters.AddWithValue("@Relation", txtRelation.Text)
       cmd.Parameters.AddWithValue("@claimid", SqlDbType.VarChar)
       cmd.Parameters("@claimid").Direction = ParameterDirection.Output
       cmd.Parameters.AddWithValue("@cpPhno", txtCPPhno.Text)
       cmd.Parameters.AddWithValue("@Photo", profilepicture)
       cmd.Parameters.AddWithValue("@ID", idorpassport)
       Dim a As Integer
       conn.Open()
       a = cmd.ExecuteNonQuery()
       If a > 0 Then
           MessageBox.Show("Data Added successfully and your clientID is :" & cmd.Parameters("@claimid").Value.ToString())
       Else
           MessageBox.Show("Please try Again")
       End If



我的存储过程


My storedprocedure

@fName varchar(50),
@Lname Varchar(50),
@Sex  varchar(2),
@DOB date,
@Age int,
@Address varchar(500),
@phno varchar(15),
@Email Varchar(100),
@IdNo varchar(30),
@contactPerson varchar(50),
@Relation Varchar(50),
@claimid varchar(30)output,
@cpPhno varchar(15),
@Photo image,
@ID image
AS
BEGIN
if @Sex='Male' 
begin
set @Sex='M'
end
if @Sex='Female' 
begin
set @Sex='F'
end

	insert into Client(FirstName,LastName,Sex,DOB,Age,[Address],PhNo,email,[IDCard/passNumber],ContactPerson,Relation,TelephoneNOContact,Created_date,photo,
	[pass/idcard]) values(@fName,@Lname,@Sex,@DOB,@Age,@Address,@phno,@Email,@IdNo,@contactPerson,@Relation,@cpPhno,GETDATE(),@Photo,@ID)
	set @claimid='CT-00000'+convert(varchar,SCOPE_IDENTITY())
	update Client set  ClientID=@claimid where ClientCode=SCOPE_IDENTITY()
	return @claimid
END





我尝试了什么:



我收到错误无法将varchar转换为int类型请解决此问题



What I have tried:

I am getting the error cannot convert varchar to type int please solve this

推荐答案

存储过程的返回值(返回关键字之后的部分)必须始终为 int



您正在尝试返回包含值的 varchar 无法转换为 int 。因此错误。



由于你没有使用程序的返回值,只需删除 return @claimid 线。该值仍将使用输出参数返回给调用者。
The return value for a stored procedure (the part after the Return keyword) must always be an int.

You are trying to return a varchar containing a value which cannot be converted to an int. Hence the error.

Since you're not using the return value of the procedure, just remove the return @claimid line. The value will still be returned to the caller using the output parameter.


这篇关于从storeprocedure获取输出时获取将varchar转换为int的错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆