2
我在SQL Server中有一個存儲過程,它具有表值類型作爲參數。以ushort字段作爲SQL Server存儲過程的參數的C#數據表
表值類型如下:
CREATE TYPE [Serveis].[tblType_DispensadorBebidas_Abonados] AS TABLE
(
[ID] [varchar](9) NOT NULL,
[Field1] [smallint] NOT NULL,
[Field2] [smallint] NOT NULL,
[Date] [datetime] NOT NULL,
PRIMARY KEY ([ID])
)
然後存儲過程藉此表值類型作爲參數:
PROCEDURE [dbo].[AddData]
@DataTable MytableValuedType READONLY
從C#創建數據表如下:
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(string)).SetOrdinal(0);
dt.Columns.Add("Field1", typeof(ushort)).SetOrdinal(1);
dt.Columns.Add("Field2", typeof(ushort)).SetOrdinal(2);
dt.Columns.Add("Date", typeof(DateTime)).SetOrdinal(3);
dt.Rows.Add(this.ID,this.Field1,this.Field2,this.Date);
在C#中的數據類型有:
- ID字符串
- 字段1 USHORT
- 字段2 USHORT
- 日期日期時間
,然後我創建一個SQL參數:
SqlParameter param = new SqlParameter();
param.ParameterName = "@DataTable";
param.Value = dt;
param.SqlDbType = SqlDbType.Structured;
添加它使用command.Parameters.Add (param)
,最後我調用了ExecuteNonQuery。
它引發錯誤(譯自西班牙語):
Column type 'Field1' not allowed. The type is "'UInt16'".
我怎麼能解決這個問題?