如何在存储过程中将测试数据表作为参数传递

gwydion93

我有一个要测试的存储过程。它使用一个已经创建的User-Defined Table Type ([TicketFields]),它的本质只有一个名为的列fieldNames,用于保存nvarchar字段名称('请求者名称、请求者组织等...)。然后它创建一个临时表,使用@keyworduser 参数在选定的字段名称中搜索该关键字。我的问题是,当我执行它进行测试时,我不能简单地将 adatatable作为参数插入

ALTER PROCEDURE [dbo].[bcasp_GetTicketsByKeyword] 
@Keyword nvarchar(150),
@fieldsTable [TicketsFields] READONLY 
AS
BEGIN
CREATE TABLE #Ticket(
    [ID] [bigint] NULL,
    [TicketNumber] [nvarchar](255) NULL,
    [Complexity] [nvarchar](255) NULL,
    [NatureOfInquiry] [nvarchar](255) NULL,
    [SMEResponseDetail] [nvarchar](255) NULL
)

declare @fieldName nvarchar(100)
declare @sql nvarchar(max)
declare @initSql nvarchar(max)
set @initSql = 'insert into #Ticket (ID, TicketNumber, Complexity, 
NatureOfInquiry, SMEResponseDetail) SELECT ID, TicketNumber, Complexity, 
CASE
    WHEN Complexity = 1 THEN NatureOfInquiry_T1 
    WHEN Complexity In (2,3,4) THEN NatureOfInquiry_T234
    END, SMEResponseDetail FROM T_Ticket WHERE '
declare @whereClause nvarchar(100)
set @whereClause = ' Like' + '''%' + @Keyword + '%'''
DECLARE tblCursor CURSOR FOR SELECT FieldName from @fieldsTable
OPEN tblCursor
FETCH NEXT from tblCursor into @fieldName

WHILE @@FETCH_STATUS = 0  
BEGIN 
set @sql = @initsql + @fieldName + @whereClause
print @sql
EXEC(@sql)

FETCH NEXT from tblCursor into @fieldName
END
Close tblCursor
deallocate tblCursor

select distinct * from #Ticket 
END 

在此处输入图片说明

场景假设要keywordfieldNames“NatureOfInquiry”和“SMEResponseDetail”的列中搜索“flood ”。我可以在下面插入什么来模拟它并返回正确的行?

USE [BCATicketManagementTest]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[bcasp_GetTicketsByKeyword]
        @Keyword = N'flood'
        ???
SELECT  'Return Value' = @return_value

GO
用户11380812

怎么样

USE [BCATicketManagementTest]
GO

DECLARE @return_value int

DECLARE @fieldsTableTest [TicketsFields]
INSERT INTO @fieldsTableTest
SELECT 'CUSTOMERID' UNION ALL SELECT 'MANAGERID' UNION ALL SELECT 'SOME OTHER FIELD'


EXEC    @return_value = [dbo].[bcasp_GetTicketsByKeyword]
        @Keyword = N'flood'
        @fieldsTable = @fieldsTableTest
SELECT  'Return Value' = @return_value

GO

我不确定如何使用 SSMS 完成此任务。

有关详细信息,请参阅使用表值参数(数据库引擎)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在SQL Server存储过程中将架构名称作为参数传递?

在存储过程中将文件路径作为参数传递

如何在存储过程中将多个char作为变量传递?

如何在此过程中将数组作为参数传递?

如何在存储过程中将表用作变量

如何在存储过程中将表声明为参数

如何在带有多个参数的sql存储过程中传递数据表

在存储过程中将运算符作为参数传递,同时防止 SQL 注入风险

如何在本地编译的存储过程中将varchar参数与null进行比较?

如何在异步过程中将参数传递给WCF

如何在调用mapreduce函数的过程中将参数传递给map函数?

将数据表传递给存储过程中的表值参数不起作用

如何在存储过程中将两个MS SQL Server表合并为一个表

在Fortran过程中将大小作为参数VS传递为形状

如何在雪花中将存储过程作为参数传递

如何在存储过程中将连接字符串写入其他数据库

如何在 Postgres 存储过程中将 JSON 转换为行

如何在存储过程中将数字转换为字符串

如何在oracle存储过程中将对象类型设置为out?

如何在存储过程中将字符串转换为int

如何在过程中将变量设置为“表”?

如何在反应表中将数据作为参数传递?

在表中动态添加列的同时如何在存储过程中传递参数

SQL Server:如何在存储过程中使用数据库名称作为参数?

如何在 MySQL 数据库的存储过程中传递参数?

如何将C#数据表传递给mysql的存储过程参数

将列表转换为数据表以在存储过程中传递表类型

如何在PHP CodeIgniter中将日期作为参数传递给MySQL存储过程?

如何在oracle存储过程中将包含纬度/经度的数组保存到sdo_geometry对象