当我右键单击存储过程并选择Execute Stored Procedure命令时,我应该将哪些值作为值传递给表值参数?
我不是在谈论SSMS“查询”窗口。我在谈论右键单击SP时显示的“执行过程”对话框。
我可以通过此屏幕直接将参数值提供给SP吗?
答案 0 :(得分:4)
这可以做到。例如,假设您已定义此表类型:
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>
执行上述版本。
答案 1 :(得分:1)
这是个老歌,但如果有人遇到:
您可以利用execute 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