簡體   English   中英

在 SQL 存儲過程中使用用戶定義的表 - 無效數據類型

[英]using user defined tables in SQL Stored Procedure - invalid data type

我一直在努力讓定義的 data.table 被接受為存儲過程參數之一的變量。

第一次使用用戶定義的表,所以我可能犯了語法錯誤

這樣我就可以從 c# 程序發送 data.table 而不是單獨插入每一行。

存儲過程

CREATE PROCEDURE [dbo].[Upload_AddBulkProducts]
@uploadedTable CSV_ADDProducts readonly
AS
    INSERT INTO [dbo].[Products]
     SELECT * FROM @uploadedTable
GO

Error = undefined variable嘗試創建存儲過程時出現的錯誤

用戶定義表

CREATE TYPE [dbo].[CSV_ADDProducts] AS TABLE(
[Product Item] [nvarchar](50) NULL,
[Product SKU] [bigint] NULL,
[Product Name] [nvarchar](max) NULL,
[Product Active] [nchar](10) NULL,
[Product Selling Price] [money] NULL,
[Product Description] [nvarchar](max) NULL,
[Product Purchase Description] [nvarchar](max) NULL,
[Product VAT Code ID] [bigint] NOT NULL,
[Product Last Update] [datetime] NULL
)
GO

在 T-SQL 的上下文中,您的代碼是有效的。 可以創建類型和過程。

然后,在 C# 代碼中使用以下代碼:

DataTable dt = new DataTable();
dt.Columns.Add("Product Item", typeof (string));
//add other columns here

SqlParameter param = new SqlParameter("@uploadedTable", SqlDbType.Structured)
{
    TypeName = "dbo.userdefinedtabletype",
    Value = dt
};
sqlComm.Parameters.Add(param);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM