从storeprocedure获取输出时获取将varchar转换为int的错误? [英] Getting error converting varchar to int while getting output from storeprocedure?
本文介绍了从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 theReturn
keyword) must always be anint
.
You are trying to return avarchar
containing a value which cannot be converted to anint
. Hence the error.
Since you're not using the return value of the procedure, just remove thereturn @claimid
line. The value will still be returned to the caller using the output parameter.
这篇关于从storeprocedure获取输出时获取将varchar转换为int的错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文