![](/img/trans.png)
[英]Passing a datatable from C# Asp.Net website to SQL Server stored procedure
[英]Error when Passing a DataTable from vb.net to a stored procedure in SQL Server
我有一個接收表的存儲過程,但是每當進行插入操作時,都會出現此錯誤:
無法將char值轉換為金錢。 char值的語法不正確。
我創建一個表作為類型
CREATE TYPE dbo.Example AS TABLE
(
Id_Exmp int,
Discount_Amount Money
)
我有一個將數據表作為參數的存儲過程:
CREATE PROCEDURE dbo.SP_Exmp
@datatable dbo.Example READONLY
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.destination_table(column_list)
SELECT column_list
FROM @datatable;
END
這是我在VB.net中擁有的代碼:
Function Example(ByVal dtTable as datatable)
Try
ConexionSQL = New SqlConnection(IniciaConexion)
Command = New SqlCommand("SP_Exmp", ConexionSQL)
Command.CommandType = CommandType.StoredProcedure
'Parametros a Utilizar
Command.Parameters.AddWithValue("@datatable ", dtTable )
ConexionSQL.Open()
If Command.ExecuteNonQuery() Then
Return True
Else
Return False
End If
ConexionSQL.Close()
ConexionSQL.Dispose()
Command.Dispose()
Catch ex As Exception
MensajeError(ex, "Error")
Return False
End Try
End Function
有兩件事:
Command.Parameters.AddWithValue("@datatable ", dtTable )
您需要設置其SqlDbType:
Command.Parameters.AddWithValue("@datatable ", dtTable).SqlDbType = SqlDbType.Structured;
Using ConexionSQL = New SqlConnection(IniciaConexion) Using command As New SqlCommand End Using End Using
DataTable dtTable = new DataTable(); dtTable.Columns.Add("Id_Exmp", typeof(int)); dtTable.Columns.Add("Discount_Amount", typeof(decimal));
我發現了問題所在,主要的問題是創建dtTable的順序,為了正確填充表類型,我以示例的方式在該類型上以相同的順序創建了列。
Dim DtTable作為datatable = Exec_Query(Query:=“ Select Id_exm,Discoun ..”,LRw:= false)
無論出於什么原因,我無序地打折,然后是折扣,然后才是ID,我沒有注意
然后一切正常。
您必須打開連接。
ConexionSQL.Open().
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.