如何使用SSMS中的表值参数执行存储过程

Gor*_*ran 8 ssms sql-server-2012

当我右键单击存储过程,并选择执行存储过程命令时,我应该将表值参数作为值传递给什么?

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

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

小智 6

这可以完成。例如,假设您定义了此表类型:

CREATE TYPE dbo.ContactsList AS TABLE ( ContactID VARCHAR(25) NOT NULL ); GO
Run Code Online (Sandbox Code Playgroud)

您想执行一个存储过程,该存储过程仅在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
Run Code Online (Sandbox Code Playgroud)

最后,<F5>例如,使用上述版本。