У меня есть хранимая процедура, которую я хочу проверить.Он использует уже созданный User-Defined Table Type ([TicketFields])
, который по существу имеет только столбец с именем fieldNames
, который содержит nvarchar
имен полей ('Имя запрашивающего лица, Организация запрашивающего и т. Д ...).Затем он создает временную таблицу, используя пользовательский параметр @keyword
для поиска этого ключевого слова в выбранных именах полей.Моя проблема в том, что когда я выполняю его для тестирования, я не могу просто подключить datatable
в качестве параметра.
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
Предположим, что в сценарии требуется поиск keyword
«флуд» в столбцах с fieldNames
«NatureOfInquiry» и «SMEResponseDetail».Что я мог бы подключить к ниже, чтобы смоделировать это и получить правильные строки для возврата?
USE [BCATicketManagementTest]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[bcasp_GetTicketsByKeyword]
@Keyword = N'flood'
???
SELECT 'Return Value' = @return_value
GO