2013-06-21 34 views
3

当我右键单击一个存储过程并选择执行存储过程命令时,应该将什么值传递给一个表值参数?如何使用SSMS中的表值参数执行存储过程

我不是在谈论SSMS“查询”窗口。我正在谈论当您右键单击SP时显示的“执行过程”对话框。

我可以通过此屏幕直接将参数值提供给SP吗?

+0

我怀疑你是否可以从设计器传递表值参数。为什么不使用SQL脚本来执行该过程? – HaBo

+0

我只是想找一个更快的方法,这个命令生成脚本来执行,所以它会很好,所有的东西都是自动生成的。 – Goran

+0

对于这样的事情,我建议你使用像RegGate.com的SQL Promt之类的工具,这个工具会在你编写exec时生成完整的脚本procName – HaBo

回答

2

这可以完成。让我们假设,例如,您定义了这个表类型:

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>用于执行你的上述版本例。

+0

在我的第二句中,我特别说:“我不是在谈论SSMS”查询“窗口” ,这是你的建议。我问是否可以在对话窗口中直接提供TVP。 – Goran

相关问题