簡體   English   中英

從DbCommand插入EXEC

[英]INSERT EXEC from DbCommand

我正在嘗試執行將參數放入臨時表的存儲過程的結果。

// 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.StoredProcedurecommand.CommandType = CommandType.StoredProcedure得到:

過程或函數“ MystoredProcThatHasParams”期望未提供的參數“ @ p1”

是否可以保存使用C#中的查詢獲取參數的存儲過程的輸出?

命令類型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";

暫無
暫無

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

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