11

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

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

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

4

2 回答 2

9

这可以做到。例如,假设您定义了这个表类型:

CREATE TYPE dbo.ContactsList AS TABLE ( ContactID VARCHAR(25) NOT NULL ); GO

您希望执行一个存储过程,该过程仅从 SSMS 中获取此类型的一个参数。为此,请从 SSMS 中选择 Execute Stored Procedure,为参数值提供 JUNK 值,然后单击 OK。这将生成样板代码来执行存储过程并给你一个错误消息。

接下来,将样板修改为类似这样,用@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>最后,使用例如执行您的上述版本。

于 2016-03-24T22:42:37.453 回答
3

这是一个老歌,但如果有人遇到:您可以利用执行 sp 对话框来呈现执行脚本,其中null包含表值参数的值,以及所有其他参数及其值。该脚本不会第一次运行。然后您可以为 tvp 添加声明并将其分配如下:(这是一个名为 IDsList 的 int 列表类型)

DECLARE @return_value int
--this two rows for the tvp
DECLARE @p5 dbo.IDsList
insert into @p5 values(7020), (7026)

EXEC @return_value = [dbo].[stpGetSomting]
    @fromDate = N'2018-01-01',
    @toDate = N'2019-01-01',
    @companies = @p5

SELECT  'Return Value' = @return_value
于 2019-02-04T11:13:10.247 回答