我试图执行将参数带入临时表的存储过程的结果。
// Create #temptable
// ..
using (DbCommand command = connection.CreateCommand())
{
command.CommandText = "INSERT #temptable EXEC [MystoredProcThatHasParams]";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(someObject)
command.ExecuteNonQuery();
}
输出:
找不到存储过程''。
如果我删除command.CommandType = CommandType.StoredProcedure
,我会:
程序或功能' MystoredProcThatHasParams'期望参数' @ p1'没有提供
是否可以保存从C#中查询参数的存储过程的输出?
答案 0 :(得分:1)
命令类型StoredProcedure
使用特殊的,性能更高的方法连接到SQL Server(RPC调用),这要求命令文本完全存储的名称程序。如果要使用CommandType.StoredProcedure
,则不能在命令文本中包含Transact-SQL。
相反,您需要使用CommandType.Text
并自己将参数嵌入到SQL字符串中:
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT #temptable EXEC [MystoredProcThatHasParams] @Param1, @Param2";
cmd.Parameters.Add("@Param1", SqlDbType.Int).Value = 1;
cmd.Parameters.Add("@Param2", SqlDbType.VarChar, 100).Value = "Test";