如何解决在SQL存储过程中使用用户定义的表-无效的数据类型
我一直在努力使已定义的数据表被接受为存储过程参数之一的变量。
这样一来,我就可以从c#程序发送数据表,而不必单独插入每一行。
存储过程
CREATE PROCEDURE [dbo].[Upload_AddBulkProducts]
@uploadedTable CSV_ADDProducts readonly
AS
INSERT INTO [dbo].[Products]
SELECT * FROM @uploadedTable
GO
错误=未定义变量 The error i get when trying to create the stored procedure
用户定义表
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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。