Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE
- @refnum VARCHAR(50)
- ,@swiftid INT = 12
- --use AtonBase
- IF (OBJECT_ID('TEMPDB..#presets') IS NOT NULL) DROP TABLE #presets
- IF (OBJECT_ID('TEMPDB..#failed') IS NOT NULL) DROP TABLE #failed
- -- таблица с ожидаемыми резултатами
- CREATE TABLE #presets (
- [mt5xx] VARCHAR(MAX),
- [columnName] VARCHAR(50),
- [tableName] VARCHAR(50),
- [ExpectedResult] VARCHAR(MAX)
- )
- -- ожидаемые результаты
- INSERT INTO #presets
- ([mt5xx], [columnName], [tableName], [ExpectedResult])
- VALUES
- ('1:123', 'SettlementDateAct', '#tblSwiftMessageCategory5', '2001-02-28'),
- ('2:234', 'TradeDate', '#tblSwiftMessageCategory5', '2001-02-26'),
- ('3:345', 'SettlementDatePln', '#tblSwiftMessageCategory5', '2001-02-27')
- CREATE TABLE #tblSwiftMessageCategory5 (
- [swiftid] INT,
- [SettlementDateAct] datetime,
- [TradeDate] datetime,
- [SettlementDatePln] datetime,
- )
- INSERT INTO #tblSwiftMessageCategory5
- VALUES
- ('12', '2001-02-28', '2001-02-26', '2001-02-27')
- -- таблица с провалившимися тестами
- CREATE TABLE #failed (
- TYPE VARCHAR(255), -- на чём свалилось (текст, неверное склонение)
- num NUMERIC(19,8), -- число
- res_exp VARCHAR(255), -- ожидаемый результат
- res_act VARCHAR(255) -- фактический результат
- )
- -- для курсора
- DECLARE
- @mt5xx VARCHAR(MAX),
- @columnName VARCHAR(50),
- @tableName VARCHAR(50),
- @expectedResult VARCHAR(MAX)
- DECLARE @tsql VARCHAR(MAX), @act VARCHAR(240), @EXP VARCHAR(240)
- /*Объявляем курсор*/
- DECLARE vend_cursor CURSOR
- FOR SELECT * FROM #presets
- OPEN vend_cursor
- -- выбираем первую строку
- FETCH NEXT FROM vend_cursor INTO @mt5xx, @columnName, @tableName, @expectedResult
- WHILE @@FETCH_STATUS = 0
- BEGIN
- -- получаем актуальные результаты
- /* SET @act_text = [dbo].[fnNum2Word] (@num, 11)
- SET @act_curr_R = [dbo].[fnNum2Word] (@num, 13)
- SET @act_curr_U = [dbo].[fnNum2Word] (@num, 12)
- -- проверка на текстовое преобразование
- IF @act_text <> @exp_text
- begin
- -- SELECT @num, @exp_text as EXPECTED, @act_text as ACTUAL
- INSERT INTO #failed VALUES('Неверный текст', @num, @exp_text, @act_text)
- end
- -- проверка на склонение рублей
- IF @act_curr_R <> @exp_curr_R
- begin
- --SELECT @num, @exp_curr_R as EXPECTED, @act_curr_R as ACTUAL
- INSERT INTO #failed VALUES('Неверное склонение', @num, @exp_text + ' ' + @exp_curr_R, @act_text + ' ' + UPPER(@act_curr_R))
- end
- -- проверка на склонение рублей
- IF @act_curr_U <> @exp_curr_U
- begin
- --SELECT @num, @exp_curr_U as EXPECTED, @act_curr_U as ACTUAL -- проверка на склонение рублей
- INSERT INTO #failed VALUES('Неверное склонение', @num, @exp_text + ' ' + @exp_curr_U, @act_text + ' ' + UPPER(@act_curr_U))
- end*/
- SET @tsql = 'select '+@columnName+' from '+@tableName+ ' where swiftid='+CAST(@swiftid AS VARCHAR)+' and '+@columnName+' like '''+@expectedresult+''''
- SELECT @tsql
- EXEC (@tsql)
- -- выбираем следующую строку
- FETCH NEXT FROM vend_cursor INTO @mt5xx, @columnName, @tableName, @expectedResult
- END
- CLOSE vend_cursor;
- DEALLOCATE vend_cursor;
- SELECT * FROM #failed
- RETURN
Advertisement
Add Comment
Please, Sign In to add comment