repeat83

Untitled

Feb 4th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.48 KB | None | 0 0
  1. DECLARE
  2.     @refnum VARCHAR(50)
  3.     ,@swiftid INT = 12
  4.    
  5. --use AtonBase
  6. IF (OBJECT_ID('TEMPDB..#presets') IS NOT NULL) DROP TABLE #presets
  7. IF (OBJECT_ID('TEMPDB..#failed') IS NOT NULL) DROP TABLE #failed
  8.  
  9. -- таблица с ожидаемыми резултатами
  10. CREATE TABLE #presets (
  11.     [mt5xx] VARCHAR(MAX),
  12.     [columnName] VARCHAR(50),
  13.     [tableName] VARCHAR(50),
  14.     [ExpectedResult] VARCHAR(MAX)
  15.     )
  16.    
  17. -- ожидаемые результаты
  18. INSERT INTO #presets
  19.     ([mt5xx], [columnName], [tableName], [ExpectedResult])
  20. VALUES
  21.     ('1:123', 'SettlementDateAct', '#tblSwiftMessageCategory5', '2001-02-28'),
  22.     ('2:234', 'TradeDate', '#tblSwiftMessageCategory5', '2001-02-26'),
  23.     ('3:345', 'SettlementDatePln', '#tblSwiftMessageCategory5', '2001-02-27')
  24.  
  25.  
  26. CREATE TABLE #tblSwiftMessageCategory5 (
  27.     [swiftid] INT,
  28.     [SettlementDateAct] datetime,
  29.     [TradeDate] datetime,
  30.     [SettlementDatePln] datetime,
  31.     )
  32. INSERT INTO #tblSwiftMessageCategory5
  33. VALUES
  34.     ('12', '2001-02-28', '2001-02-26', '2001-02-27')
  35.  
  36. -- таблица с провалившимися тестами
  37. CREATE TABLE #failed (
  38.     TYPE VARCHAR(255), -- на чём свалилось (текст, неверное склонение)
  39.     num NUMERIC(19,8), -- число
  40.     res_exp VARCHAR(255), -- ожидаемый результат
  41.     res_act VARCHAR(255) -- фактический результат
  42. )
  43.  
  44. -- для курсора
  45.  
  46. DECLARE
  47.     @mt5xx VARCHAR(MAX),
  48.     @columnName VARCHAR(50),
  49.     @tableName VARCHAR(50),
  50.     @expectedResult VARCHAR(MAX)
  51.  
  52.  
  53. DECLARE @tsql VARCHAR(MAX), @act VARCHAR(240), @EXP VARCHAR(240)
  54.  
  55.  
  56. /*Объявляем курсор*/
  57. DECLARE vend_cursor CURSOR  
  58.     FOR SELECT * FROM #presets  
  59. OPEN vend_cursor  
  60. -- выбираем первую строку
  61. FETCH NEXT FROM vend_cursor INTO @mt5xx, @columnName, @tableName, @expectedResult
  62. WHILE @@FETCH_STATUS = 0
  63. BEGIN
  64.     -- получаем актуальные результаты
  65. /*  SET @act_text = [dbo].[fnNum2Word] (@num, 11)
  66.     SET @act_curr_R = [dbo].[fnNum2Word] (@num, 13)
  67.     SET @act_curr_U = [dbo].[fnNum2Word] (@num, 12)
  68.  
  69.      -- проверка на текстовое преобразование
  70.     IF @act_text <> @exp_text
  71.     begin
  72. --      SELECT @num, @exp_text as EXPECTED, @act_text as ACTUAL
  73.         INSERT INTO #failed VALUES('Неверный текст', @num, @exp_text, @act_text)
  74.     end
  75.    
  76.     -- проверка на склонение рублей
  77.     IF @act_curr_R <> @exp_curr_R
  78.     begin
  79.         --SELECT @num, @exp_curr_R as EXPECTED, @act_curr_R as ACTUAL
  80.         INSERT INTO #failed VALUES('Неверное склонение', @num, @exp_text + ' ' + @exp_curr_R, @act_text + ' ' + UPPER(@act_curr_R))
  81.     end
  82.    
  83.     -- проверка на склонение рублей
  84.     IF @act_curr_U <> @exp_curr_U
  85.     begin
  86.         --SELECT @num, @exp_curr_U as EXPECTED, @act_curr_U as ACTUAL -- проверка на склонение рублей
  87.                 INSERT INTO #failed VALUES('Неверное склонение', @num, @exp_text + ' ' + @exp_curr_U, @act_text + ' ' + UPPER(@act_curr_U))
  88.  
  89.     end*/
  90.     SET @tsql = 'select '+@columnName+' from '+@tableName+ ' where swiftid='+CAST(@swiftid AS VARCHAR)+' and '+@columnName+' like '''+@expectedresult+''''
  91.     SELECT @tsql
  92.     EXEC (@tsql)
  93.    
  94.     -- выбираем следующую строку
  95.     FETCH NEXT FROM vend_cursor INTO @mt5xx, @columnName, @tableName, @expectedResult
  96. END
  97. CLOSE vend_cursor;
  98. DEALLOCATE vend_cursor;
  99.  
  100. SELECT * FROM #failed
  101. RETURN
Advertisement
Add Comment
Please, Sign In to add comment