我只是想知道在使用SQLCommand对象调用存储过程时是否有指定查询提示的方法?
例如,我需要调用类似这样的东西
EXECUTE SPName'0068', 40 WITH RECOMPILE
我只是想知道,我如何使用SQLCommand对象来模拟它。
Dim connection As New SqlClient.SqlConnection("server=(local);database=DEV;Persist Security Info=True;uid=sa;pwd=;")
connection.Open()
Dim cmd As New SqlClient.SqlCommand
With cmd
.Connection = connection
.CommandText = "Warehouse_AdjustInventory_byWarehouse_u"
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@ProductID", "0068")
.Parameters.AddWithValue("@WarehouseID", 40)
End With
Try
Dim result As Integer = cmd.ExecuteNonQuery()
Trace.WriteLine(result)
Catch ex As Exception
Trace.WriteLine(ex.Message)
End Try
connection.Close()
SQLCommand是否支持提供像RECOMPILE这样的查询提示? 谢谢
答案 0 :(得分:1)
我相信您可以将CommandType设置为Text
,并将您想要的语句(EXECUTE SPName '0068', 40 WITH RECOMPILE
)完全放入CommandText。
然而,真正的问题是为什么WITH RECOMPILE
,因为它会在每次执行时重新编译过程中的所有查询?检查执行计划并尝试识别可从重新编译中受益的单个语句。然后仅对这些查询使用OPTION(RECOMPILE)
提示。