2010-07-02 144 views
4

嗨!我想創建存儲過程,返回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時轉換失敗。

我做錯了什麼?謝謝!

+0

是這個C#嗎?有趣。 – 2010-07-02 06:29:22

+0

@Serkan:這是vb.net(它被標記爲)。 – shahkalpesh 2010-07-02 06:43:35

+0

也被標記爲C#,無論如何它的固定。 – 2010-07-02 07:03:40

回答

4

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 
+0

非常感謝!現在它工作正常! – user238271 2010-07-02 06:38:39

-1

我認爲你是通過「藍色顏色」作爲參數值id_doc下。
而存儲過程調用可能會失敗,因爲它接受一個int類型作爲第一個輸入參數

+0

不,OP試圖通過return語句返回「藍色」 – gbn 2010-07-02 06:32:11

+0

@gbn:如果您爲int參數傳遞varchar值會發生什麼? – shahkalpesh 2010-07-02 06:34:54

+0

同樣的錯誤,但這不是**這裏的原因** – gbn 2010-07-02 06:35:35

相關問題