当我右键单击一个存储过程并选择执行存储过程命令时,应该将什么值传递给一个表值参数?如何使用SSMS中的表值参数执行存储过程
我不是在谈论SSMS“查询”窗口。我正在谈论当您右键单击SP时显示的“执行过程”对话框。
我可以通过此屏幕直接将参数值提供给SP吗?
当我右键单击一个存储过程并选择执行存储过程命令时,应该将什么值传递给一个表值参数?如何使用SSMS中的表值参数执行存储过程
我不是在谈论SSMS“查询”窗口。我正在谈论当您右键单击SP时显示的“执行过程”对话框。
我可以通过此屏幕直接将参数值提供给SP吗?
这可以完成。让我们假设,例如,您定义了这个表类型:
CREATE TYPE dbo.ContactsList AS TABLE (ContactID VARCHAR(25) NOT NULL); GO
要执行一个存储过程,只需要一个这种类型的参数,从内SSMS。为此,请从SSMS中选择执行存储过程,为参数值提供JUNK值,然后单击确定。这将生成执行存储过程的样板代码并给出错误消息。
接下来,修改锅炉板这样的事情,代@ContactIdsTableParameter
(用你自己的变量名)为您之前提供的JUNK值:
DECLARE @ContactIdsTableParameter AS dbo.ContactsList
INSERT INTO @ContactIdsTableParameter (ContactID)
SELECT 1
INSERT INTO @ContactIdsTableParameter (ContactID)
SELECT 100002787
SELECT * FROM @ContactIdsTableParameter
DECLARE @return_value int
EXEC @return_value = [dbo].[usp_MGOAssignmentsGet]
@ContactIdsTable = @ContactIdsTableParameter
SELECT 'Return Value' = @return_value
GO
最后,<F5>
用于执行你的上述版本例。
在我的第二句中,我特别说:“我不是在谈论SSMS”查询“窗口” ,这是你的建议。我问是否可以在对话窗口中直接提供TVP。 – Goran
我怀疑你是否可以从设计器传递表值参数。为什么不使用SQL脚本来执行该过程? – HaBo
我只是想找一个更快的方法,这个命令生成脚本来执行,所以它会很好,所有的东西都是自动生成的。 – Goran
对于这样的事情,我建议你使用像RegGate.com的SQL Promt之类的工具,这个工具会在你编写exec时生成完整的脚本procName – HaBo