当我右键单击存储过程并选择执行存储过程命令时,我应该将什么作为值传递给表值参数?
我不是在谈论 SSMS“查询”窗口。我说的是当您右键单击 SP 时显示的“执行过程”对话框。
我可以通过此屏幕直接向 SP 提供参数值吗?
当我右键单击存储过程并选择执行存储过程命令时,我应该将什么作为值传递给表值参数?
我不是在谈论 SSMS“查询”窗口。我说的是当您右键单击 SP 时显示的“执行过程”对话框。
我可以通过此屏幕直接向 SP 提供参数值吗?
这可以做到。例如,假设您定义了这个表类型:
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>
最后,使用例如执行您的上述版本。
这是一个老歌,但如果有人遇到:您可以利用执行 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