我有一个使用 C# 开发的应用程序,它遵循以下工作流程:
- 读取 CSV 文件
- 创建一个临时表
- 使用 SqlBulkCopy 将 CSV 数据发送到临时表
- 调用存储过程将临时表合并到真实表中
删除临时表
using (var dbConnection = new SqlConnection(_connectionString)) { dbConnection.Open(); using (var cmd = new SqlCommand("CREATE TABLE [#UpdatedData]([Path] [nvarchar](50))", dbConnection)) { cmd.ExecuteNonQuery(); } using (var bulkCopy = new SqlBulkCopy(dbConnection)) { bulkCopy.DestinationTableName = "[#UpdatedData]"; bulkCopy.WriteToServer(dt); } using (var cmd = new SqlCommand("usp_MergeData", dbConnection)) { cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); } using (var cmd = new SqlCommand("DROP TABLE [#UpdatedData]", dbConnection)) { cmd.ExecuteNonQuery(); } }
我的问题是我正在用 C# 创建临时表,但我无法编写 SQL Server 存储过程,因为它找不到临时表。有什么解决方法吗?
我将 localdb 用于开发,将 SQL Azure 用于生产。
最佳答案
您可以创建一个全局临时表:
using (var cmd = new SqlCommand(
"CREATE TABLE [##UpdatedData]([Path] [nvarchar](50))"
, dbConnection))
编辑
由于您不能在 SQL Azure 中拥有全局临时表,因此您可能必须创建一个真实的表。
关于c# - 如何编写使用从 C# 创建的临时表的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968188/