当将varchar值'Blue color'转换为数据类型int时,转换失败int
嗨!我想创建存储过程,返回varchar值,我需要显示在文本框中的值。当将varchar值'Blue color'转换为数据类型int时,转换失败int
这是为存储过程的代码:
Create PROCEDURE Status @id_doc int, @Name varchar(50) OUTPUT
AS
select @Name =items.name
from Doc,Items where @id_doc=IDN and doc.IDN=Items.ID
return @Name
这是在vb.net代码,其中i在需要文本框以显示从过程返回值:
Public Sub Current()
Dim dtc As New Data.DataTable
Dim dr As SqlClient.SqlDataReader
Dim da As New SqlClient.SqlDataAdapter
Dim cmd As New SqlClient.SqlCommand
Dim id_doc As Integer
Dim dset As New DataSet
Dim recordset As DataRow
Dim Name As String
Try
id_doc = idDocExplorer
cmd.Connection = pubCon
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "Status"
cmd.Parameters.Add("@id_doc", id_doc)
cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50)
cmd.Parameters("@Name ").Direction = ParameterDirection.Output
cmd.ExecuteScalar()
Name = cmd.Parameters("@Name").Value
TextBox1.text=Name
Catch ex As Exception
MsgBox(ex.Message)
Finally
dtc = Nothing
dr = Nothing
da = Nothing
End Try
End Sub
当尝试执行此代码我在异常中收到此消息:
“将varchar值'Blue color'转换为数据类型为int时转换失败。
我做错了什么?谢谢!
RETURN取一个整数参数只有这么return @Name
导致它
使用此而不是返回记录集(用适当的JOIN太)
select
items.name
from
Doc
JOIN
Items ON doc.IDN = Items.ID
where
@id_doc = IDN
虽然,它可以这样写太因为@id_doc = doc.IDN = Items.ID
:
select
items.name
from
Items
where
Items.ID = @id_doc
如果你想使用OUTPUT参数,而不是一个记录,然后只需删除RETURN statem耳鼻喉科和离开分配到@Name
ALTER PROCEDURE Status @id_doc int, @Name varchar(50) OUTPUT
AS
select @Name = items.name from Items where Items.ID = @id_doc
GO
非常感谢!现在它工作正常! – user238271 2010-07-02 06:38:39
我认为你是通过“蓝色颜色”作为参数值id_doc
下。
而存储过程调用可能会失败,因为它接受一个int
类型作为第一个输入参数
不,OP试图通过return语句返回“蓝色” – gbn 2010-07-02 06:32:11
@gbn:如果您为int参数传递varchar值会发生什么? – shahkalpesh 2010-07-02 06:34:54
同样的错误,但这不是**这里的原因** – gbn 2010-07-02 06:35:35
是这个C#吗?有趣。 – 2010-07-02 06:29:22
@Serkan:这是vb.net(它被标记为)。 – shahkalpesh 2010-07-02 06:43:35
也被标记为C#,无论如何它的固定。 – 2010-07-02 07:03:40