c# - 在 SQL 存储过程中使用用户定义的表 - 无效的数据类型
问题描述
我一直在努力让定义的数据表被接受为存储过程参数之一的变量。
第一次使用用户定义的表,所以我可能犯了语法错误
这样我就可以从 ac# 程序发送数据表,而不是单独插入每一行。
存储过程
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);
推荐阅读
- python - 使用 Python 进行 BigQuery 单元测试
- xcode - 无法使用 stopUpdatingLocation 和 stopRelativeAltitudeUpdates 停止更新
- azure - Azure 跨存储库策略会否决存储库本地策略?
- node.js - 在 NodeJS 中获取 mac 地址的问题
- python - 优化 100 万个 For 循环的 Python 代码
- android - 无法在 Android Studio 中创建与配对设备的蓝牙连接
- php - 从多维数组制作面包屑
- tableau-api - 获取在 Tableau 中使用应用程序 A 的用户使用的应用程序的不同计数
- python - 仅在调用函数时继续
- python - 我无法使用 opencv2 并收到 ImportError: libgl.so.1 cannot open shared object file no such file or directory