2013-05-14 42 views
0

我有SQL Server 2008中編寫的以下SQL語句,即使表中有數據,也不會爲OUTPUT參數返回一個值。我添加了靜態值並單獨運行查詢,並生成了一條記錄,所以我不確定它是否與我的存儲過程或我的VB.NET代碼有關。SQL OUTPUT參數未分配

ALTER Procedure [dbo].[GetGenInfo_Delete01_01_22] 
@IDX int, 
@FPath varchar(100) OUTPUT 

AS 

Begin 
    SELECT @FPath = FilePath FROM GENINFO_E1_01_22 WHERE ID = @IDX 
    DELETE 
    FROM GenInfo_E1_01_22 
    WHERE ID = @IDX 

END 

我的VB代碼

Using con As New SqlConnection(connstr) 
    Using cmd As New SqlCommand() 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.CommandText = "GetGenInfo_Delete01_01_22" 
     cmd.Parameters.Add("IDX", ID) 
     cmd.Parameters.Add("@FPath", SqlDbType.VarChar, 100) 
     cmd.Parameters("@FPath").Direction = ParameterDirection.Output 
     cmd.Connection = con 
     con.Open() 
     GridView1.DataSource = cmd.ExecuteReader() 
     GridView1.DataBind() 
     con.Close() 
    End Using 
End Using 
+0

你永遠不會從你的VB.NET代碼中的參數中的值退了出去。不知道爲什麼你綁定了ExecuteReader的結果,因爲它是空的。 – Oded

+1

看起來在你的VB代碼中。執行完SPROC後,你需要從參數中取出輸出值:DIm SomeString as string = cmd.Parameters(「@ FPath」)。值 – MBulava

+0

@Oded:輸入/輸出是從SQL Server的角度。您不讀取** in **參數中的值。 – Andomar

回答

3

的輸出參數並不在結果集中顯示。所以你不能用ExecuteReader()來閱讀它。

可以讀取它想:

Dim result as String = cmd.Parameters("@FPath").Value