You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在测试SQL存储过程时传入用户定义表类型参数?

如何测试接收用户定义表类型参数的存储过程?

你遇到的问题在使用用户定义表类型(UDTT)作为存储过程参数时很常见——没法直接传入数据表,得先声明一个对应类型的变量,填充好需要的数据后再传递给存储过程。

针对你的场景,要在NatureOfInquiry和SMEResponseDetail字段中搜索关键词flood,可以这样补全测试代码:

USE [BCATicketManagementTest] 
GO 
-- 1. 声明与用户定义表类型匹配的变量
DECLARE @searchFields [TicketsFields]
-- 2. 往变量中插入要搜索的目标字段名
INSERT INTO @searchFields (FieldName)
VALUES ('NatureOfInquiry'), ('SMEResponseDetail')

DECLARE @return_value int 
-- 3. 执行存储过程,传入关键词和准备好的表变量
EXEC @return_value = [dbo].[bcasp_GetTicketsByKeyword] 
    @Keyword = N'flood',
    @fieldsTable = @searchFields

SELECT 'Return Value' = @return_value 
GO

额外提示:

  • 必须保证声明的变量类型和你的[TicketsFields]完全一致,SQL Server才会识别它作为合法参数。
  • 插入的字段名要和存储过程中处理的字段完全匹配(包括空格、大小写),否则动态SQL拼接时会出现语法错误或匹配不到数据。
  • 你的存储过程存在SQL注入风险:如果@Keyword包含单引号,直接拼接字符串会导致执行报错。建议改用sp_executesql做参数化查询,把@Keyword作为参数传递,而不是直接拼进SQL语句里。

内容的提问来源于stack exchange,提问作者gwydion93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:18:06