Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Странная ошибка в табличной функции / 18 сообщений из 18, страница 1 из 1
06.03.2018, 10:51
    #39611060
m71
m71
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
Подскажите, куда можно копать в такой ситуации.

Есть табличная функция, которая иногда стала выдавать не то, что должна:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER FUNCTION [dbo].[fnRKCAccrEvidInd](@UOrgID decimal(16,4), @BldID bigint, @D1 smalldatetime, @D2 smalldatetime)
RETURNS @R TABLE (
...
)
AS 
BEGIN  
  INSERT INTO @R
  SELECT ...

  RETURN;
END


Делаем запрос

Код: sql
1.
SELECT * FROM dbo.fnRKCAccrEvidInd(2461224479, 2400001000083204900, '20171201', '20171231')


Получаем результат, но вместо значений в некоторых строках почему-то нули.

Начали разбираться, убили много времени.
Определили, что на ошибку влияет входной параметр @D2 smalldatetime, который как-то не так попадает в функцию

Делаем такой бессмысленный финт: параметр @D2 переименовываем на @D2x,
декларируем @D2 в теле функции, делаем SET @D2 = @D2x

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER FUNCTION [dbo].[fnRKCAccrEvidInd](@UOrgID decimal(16,4), @BldID bigint, @D1 smalldatetime, @D2x smalldatetime)
RETURNS @R TABLE (
...
)
AS 
BEGIN  
  DECLARE @D2 smalldatetime
  SET @D2 = @D2x

  --дальше все тоже самое, ничего не меняем
  INSERT INTO @R
  SELECT ...

  RETURN;
END


Вот теперь все работает правильно!
Добавили в функцию бредовое ненужное действие и получили правильный результат.
Как такое может быть?

Таких функций в проекте очень много. И где оно опять выстрелит...
Подскажите, что делать и в чем может быть ошибка?
...
Рейтинг: 0 / 0
06.03.2018, 11:02
    #39611066
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
Не совсем по теме, но если в функции один SELECT, то почему не сделать инлайн-функцию?
...
Рейтинг: 0 / 0
06.03.2018, 11:35
    #39611083
m71
m71
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
В проекте много таких функций, они иногда меняются. Где-то было много Select-ов, стал один, где-то наоборот.
В критичных местах переделываем. Ну да, наверное это не по теме.
...
Рейтинг: 0 / 0
06.03.2018, 11:47
    #39611088
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
m71, Каст между varchar'ами и различными date/datetime/smalldatetime... имеет место быть?
...
Рейтинг: 0 / 0
06.03.2018, 11:52
    #39611092
Гигабайт Мегабайтович Килобайтов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
действительно нет ли где не явного преоброзования (и не обязательно из varchar)
...
Рейтинг: 0 / 0
06.03.2018, 12:08
    #39611105
Кусочек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
Код: sql
1.
SELECT * FROM dbo.fnRKCAccrEvidInd(2461224479, 2400001000083204900, N'20171201', N'20171231')



А такой вызов как-то влияет на результат?
...
Рейтинг: 0 / 0
06.03.2018, 12:09
    #39611108
хм-хм-хм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
дайте уже полный текст этой функции
...
Рейтинг: 0 / 0
06.03.2018, 13:16
    #39611171
m71
m71
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
Кусочек
Код: sql
1.
SELECT * FROM dbo.fnRKCAccrEvidInd(2461224479, 2400001000083204900, N'20171201', N'20171231')



А такой вызов как-то влияет на результат?

Не влияет
...
Рейтинг: 0 / 0
06.03.2018, 13:18
    #39611174
m71
m71
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
хм-хм-хмдайте уже полный текст этой функции

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
CREATE FUNCTION [dbo].[fnRKCAccrEvidInd](@UOrgID decimal(16,4), @BldID bigint, @D1 smalldatetime, @D2 smalldatetime)
RETURNS @R TABLE 
(
  cdate date NOT NULL,
  acc_id decimal(19,7) NOT NULL,
  ptype_id tinyint NOT NULL,
  cvol2_11 decimal(12,6),
  cvol2_21 decimal(12,6),
  cvol2_22 decimal(12,6),
  cvol2_31 decimal(12,6),
  cvol2_32 decimal(12,6),
  cvol2_33 decimal(12,6),
  cvol2 AS ISNULL(cvol2_11,0.0) + ISNULL(cvol2_21,0.0) + ISNULL(cvol2_22,0.0) + ISNULL(cvol2_31,0.0) + ISNULL(cvol2_32,0.0) + ISNULL(cvol2_33,0.0)
  PRIMARY KEY CLUSTERED (cdate, acc_id, ptype_id)
)
AS 
BEGIN  

  INSERT INTO @R

  SELECT 

  T4.cdate,  
  T4.acc_id,
  T4.ptype_id,
  cvol2_11 = SUM(T4.dvol_11) OVER (PARTITION BY T4.acc_id, T4.ptype_id ORDER BY T4.acc_id, T4.ptype_id),
  cvol2_21 = SUM(T4.dvol_21) OVER (PARTITION BY T4.acc_id, T4.ptype_id ORDER BY T4.acc_id, T4.ptype_id),
  cvol2_22 = SUM(T4.dvol_22) OVER (PARTITION BY T4.acc_id, T4.ptype_id ORDER BY T4.acc_id, T4.ptype_id),
  cvol2_31 = SUM(T4.dvol_32) OVER (PARTITION BY T4.acc_id, T4.ptype_id ORDER BY T4.acc_id, T4.ptype_id),
  cvol2_32 = SUM(T4.dvol_32) OVER (PARTITION BY T4.acc_id, T4.ptype_id ORDER BY T4.acc_id, T4.ptype_id),
  cvol2_33 = SUM(T4.dvol_33) OVER (PARTITION BY T4.acc_id, T4.ptype_id ORDER BY T4.acc_id, T4.ptype_id)

  FROM (
 
  SELECT
  T3.cdate,
  T3.acc_id,
  T3.ptype_id,
  points_count = COUNT(T3.point_id),
  evid_count = SUM(CASE WHEN ctar_id IS NULL THEN 0 ELSE 1 END),
  
  dvol_11 = SUM(CASE WHEN T3.ctar_id = 1 THEN CASE WHEN T3.clevel_id = 2 THEN T3.dvol_1 * (CASE WHEN T3.INHS = 0 THEN T3.ashare_a ELSE CAST(T3.INH as decimal(5,1)) / CAST(T3.INHS as decimal(5,1)) END) ELSE T3.dvol_1 END ELSE NULL END),
  dvol_21 = SUM(CASE WHEN T3.ctar_id = 2 THEN CASE WHEN T3.clevel_id = 2 THEN T3.dvol_1 * (CASE WHEN T3.INHS = 0 THEN T3.ashare_a ELSE CAST(T3.INH as decimal(5,1)) / CAST(T3.INHS as decimal(5,1)) END) ELSE T3.dvol_1 END ELSE NULL END),
  dvol_22 = SUM(CASE WHEN T3.ctar_id = 2 THEN CASE WHEN T3.clevel_id = 2 THEN T3.dvol_2 * (CASE WHEN T3.INHS = 0 THEN T3.ashare_a ELSE CAST(T3.INH as decimal(5,1)) / CAST(T3.INHS as decimal(5,1)) END) ELSE T3.dvol_2 END ELSE NULL END),
  dvol_31 = SUM(CASE WHEN T3.ctar_id = 3 THEN CASE WHEN T3.clevel_id = 2 THEN T3.dvol_1 * (CASE WHEN T3.INHS = 0 THEN T3.ashare_a ELSE CAST(T3.INH as decimal(5,1)) / CAST(T3.INHS as decimal(5,1)) END) ELSE T3.dvol_1 END ELSE NULL END),
  dvol_32 = SUM(CASE WHEN T3.ctar_id = 3 THEN CASE WHEN T3.clevel_id = 2 THEN T3.dvol_2 * (CASE WHEN T3.INHS = 0 THEN T3.ashare_a ELSE CAST(T3.INH as decimal(5,1)) / CAST(T3.INHS as decimal(5,1)) END) ELSE T3.dvol_2 END ELSE NULL END),
  dvol_33 = SUM(CASE WHEN T3.ctar_id = 3 THEN CASE WHEN T3.clevel_id = 2 THEN T3.dvol_3 * (CASE WHEN T3.INHS = 0 THEN T3.ashare_a ELSE CAST(T3.INH as decimal(5,1)) / CAST(T3.INHS as decimal(5,1)) END) ELSE T3.dvol_3 END ELSE NULL END)

  FROM (

  SELECT
  CL.cdate,
  PA.flat_id,
  T2.acc_id,
  T2.ptype_id,
  T2.point_id,
  T2.clevel_id,
  T2.ctar_id,
  T2.dvol_1,
  T2.dvol_2, 
  T2.dvol_3,
  PR.INH,
  PR.INHS,
  ashare_a = ISNULL(PP.pacc_share,1.0),
  pacc_share = ISNULL(PP.pacc_share,1.0)

  FROM Calendar CL

  INNER JOIN (

  SELECT 
  T1.acc_id,
  T1.point_id,
  T1.clevel_id,
  T1.ptype_id,
  T1.pbeg_date,
  T1.pend_date,
  T1.levi_date,
  T1.evid_date,
  T1.ctar_id,   
  dvol_1 = CASE WHEN T1.rep_date = @D1 THEN CAST(T1.vol_1 / T1.days_cnt AS decimal(20,11)) ELSE 0.0 END, 
  dvol_2 = CASE WHEN T1.rep_date = @D1 THEN CAST(T1.vol_2 / T1.days_cnt AS decimal(20,11)) ELSE 0.0 END,  
  dvol_3 = CASE WHEN T1.rep_date = @D1 THEN CAST(T1.vol_3 / T1.days_cnt AS decimal(20,11)) ELSE 0.0 END 
  FROM (
  
  SELECT
  PA.acc_id,
  CP.point_id,
  CP.clevel_id,
  CP.ptype_id,
  pbeg_date = CP.beg_date, 
  pend_date = ISNULL(CP.end_date,'20400101'), 
  CE.ctar_id,   
  CE.levi_date,  
  rep_date = dbo.fnMonthFirstDay(CE.evid_date),
  CE.evid_date,
  CE.vol_1,
  CE.vol_2, 
  CE.vol_3,
  days_cnt = DATEDIFF(day,dbo.MaxDate(CE.levi_date,dbo.fnMonthFirstDay(CE.evid_date)),CE.evid_date) + 1
  FROM Pers_accounts PA 
  INNER JOIN (--так быстрее в 10 раз
  SELECT 
  PA.acc_id,
  CP.point_id
  FROM Counter_points CP
  INNER JOIN Pers_accounts PA ON (CP.clevel_id = 2 AND CP.build_id = PA.build_id AND CP.flat_id = PA.flat_id)
  UNION
  SELECT 
  PA.acc_id,
  CP.point_id
  FROM Counter_points CP
  INNER JOIN Pers_accounts PA ON (CP.clevel_id = 3 AND CP.acc_id = PA.acc_id)
  ) MP ON (PA.acc_id = MP.acc_id)
  INNER JOIN Counter_points CP ON (MP.point_id = CP.point_id)
  LEFT OUTER JOIN (    
	SELECT 
    CN.point_id,
    CN.count_id,
	CS.ctar_id,
    levi_date = LAG(CE.evid_date,1,CN.beg_date) OVER (PARTITION BY CE.count_id ORDER BY CE.count_id),
    CE.evid_date,
	CE.vol_1,
    CE.vol_2, 
    CE.vol_3
    FROM Counter_evid CE
	INNER JOIN Counters CN ON (CE.count_id = CN.count_id)
	INNER JOIN Counter_points CP ON (CP.point_id = CN.point_id)
	INNER JOIN Counter_series CS ON (CN.cseries_id = CS.cseries_id)
	WHERE CE.evid_date >= @D1
	  AND CE.evid_date <= ISNULL(CN.ncheck_date,'20400101') --дата поверки
	  AND CE.evid_date BETWEEN CP.beg_date AND ISNULL(CP.end_date,'20400101')
	  AND CE.evid_date BETWEEN CN.beg_date AND ISNULL(CN.end_date,'20400101')
	  AND CN.beg_date <= @D2 AND ISNULL(CN.end_date,'20400101') >= @D1	  	  
    ) CE ON (CP.point_id = CE.point_id)

  WHERE (CP.beg_date <= @D2) AND (ISNULL(CP.end_date,'20400101') >= @D1)
    AND (PA.build_id = @BldID)	
   
  ) T1
  
  ) T2 ON ((T2.evid_date IS NULL) OR (CL.cdate BETWEEN T2.levi_date AND T2.evid_date))
	AND (CL.cdate BETWEEN T2.pbeg_date AND T2.pend_date)

  INNER JOIN Pers_accounts PA ON (T2.acc_id = PA.acc_id)
    AND (PA.beg_date <= CL.cdate AND ISNULL(PA.end_date,'20400101') >= CL.cdate)
  
  LEFT OUTER JOIN PAcc_params PP ON (
	(T2.acc_id = PP.acc_id) AND	
	(PP.beg_date = (SELECT MAX(beg_date) FROM PAcc_params WHERE (acc_id = T2.acc_id) AND beg_date <= CL.cdate))
	) 
	
  LEFT OUTER JOIN (
    SELECT
	PR.cdate,
	PR.acc_id,
	INH = ISNULL(PR.INH,0),
    INHS = ISNULL((SUM(INH) over(PARTITION BY PR.cdate, PA.flat_id)),0)
	FROM dbo.fnRKCAccrRegM(@UOrgID,@BldID,@D1,@D2) PR
	INNER JOIN Pers_accounts PA ON (PR.acc_id = PA.acc_id)
	) PR ON (CL.CDate = PR.cdate) AND (T2.acc_id = PR.acc_id)  

  WHERE (CL.cdate BETWEEN @D1 AND @D2)
    AND (PA.org_id = @UOrgID) 

  ) T3

  GROUP BY T3.cdate, T3.acc_id, T3.ptype_id

  ) T4

  WHERE T4.points_count = T4.evid_count

  RETURN;
END

...
Рейтинг: 0 / 0
06.03.2018, 13:21
    #39611178
хм-хм-хм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
ну и код функции dbo.fnRKCAccrRegM тоже давайте
...
Рейтинг: 0 / 0
06.03.2018, 13:26
    #39611181
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
и главное, где то, что "в некоторых строках почему-то нули"
...
Рейтинг: 0 / 0
06.03.2018, 13:33
    #39611186
m71
m71
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
Результат правильный:
2017-12-01 2461224479.3000090 1 2.000000 NULL NULL NULL NULL NULL 2.000000
2017-12-01 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000
2017-12-02 2461224479.3000090 1 2.000000 NULL NULL NULL NULL NULL 2.000000
2017-12-02 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000
2017-12-03 2461224479.3000090 1 2.000000 NULL NULL NULL NULL NULL 2.000000
2017-12-03 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000
2017-12-04 2461224479.3000090 1 2.000000 NULL NULL NULL NULL NULL 2.000000
2017-12-04 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000

Результат, который выдает функция:
2017-12-01 2461224479.3000090 1 0.000000 NULL NULL NULL NULL NULL 0.000000
2017-12-01 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000
2017-12-02 2461224479.3000090 1 0.000000 NULL NULL NULL NULL NULL 0.000000
2017-12-02 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000
2017-12-03 2461224479.3000090 1 0.000000 NULL NULL NULL NULL NULL 0.000000
2017-12-03 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000
2017-12-04 2461224479.3000090 1 0.000000 NULL NULL NULL NULL NULL 0.000000
2017-12-04 2461224479.3000090 2 1.000000 NULL NULL NULL NULL NULL 1.000000

Кол-во строк совпадает, но через строчку данные обнуляются

Вообще, я самого главного не могу понять. Чем @D2 smalldatetime в заголовке функции отличается от того же самого в ее теле
...
Рейтинг: 0 / 0
06.03.2018, 13:41
    #39611191
m71
m71
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
хм-хм-хмну и код функции dbo.fnRKCAccrRegM тоже давайте

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
CREATE FUNCTION dbo.fnRKCAccrRegM(@UOrgID decimal(16,4), @BldID bigint, @D1 date, @D2 date)
RETURNS @R TABLE 
(
    cdate date NOT NULL,
	acc_id decimal(19,7) NOT NULL,
	INH smallint --проживающих на лицевом
	PRIMARY KEY CLUSTERED (cdate, acc_id)
)
AS 
BEGIN  
  INSERT INTO @R
    
  SELECT 
  CL.cdate,
  PA.acc_id,
  INH = CASE WHEN ISNULL(T2.INH,0) = 0 THEN ISNULL(T1.INH,0) ELSE ISNULL(T2.INH,0) END
  FROM Calendar CL
  INNER JOIN Pers_accounts PA ON (CL.cdate BETWEEN PA.beg_date AND ISNULL(PA.end_date,'20400101'))

  LEFT OUTER JOIN (
  SELECT 
  CL.cdate,
  PA.acc_id,
  INH = (COUNT(ISNULL(PR.man_id,0)))
  FROM Calendar CL
  INNER JOIN Pers_accounts PA ON (CL.cdate BETWEEN PA.beg_date AND ISNULL(PA.end_date,'20400101'))
  INNER JOIN PAcc_own PO ON (PA.acc_id = PO.acc_id)
  INNER JOIN PAcc_own_rec PR ON (PO.own_id = PR.own_id) AND (CL.cdate BETWEEN PR.beg_date AND ISNULL(PR.end_date,'20400101'))
  WHERE (CL.cdate BETWEEN @D1 AND @D2) AND (PA.build_id = @BldID)
    AND (PA.org_id = @UOrgID)
    AND (PA.beg_date <= CL.cdate AND ISNULL(PA.end_date,'20400101') >= CL.cdate)
    AND (PR.deleted = 0)
  GROUP BY CL.cdate, PA.acc_id
  ) T1 ON CL.cdate = T1.cdate AND PA.acc_id = T1.acc_id

  LEFT OUTER JOIN (
  SELECT 
  CL.cdate,
  PA.acc_id,
  INH = (COUNT(ISNULL(RR.man_id,0)))
  FROM Calendar CL
  INNER JOIN Pers_accounts PA ON (CL.cdate BETWEEN PA.beg_date AND ISNULL(PA.end_date,'20400101'))
  INNER JOIN PAcc_reg PR ON (PA.acc_id = PR.acc_id)
  INNER JOIN PAcc_reg_rec RR ON (PR.reg_id = RR.reg_id) 
    AND (CL.cdate BETWEEN RR.beg_date AND (CASE WHEN RR.estat_id = 1 THEN ISNULL(RR.end_date,'20400101') ELSE '20400101' END))
    AND NOT EXISTS (
	   SELECT * FROM PAcc_reg_rec_miss RM
	   WHERE (RR.reg_id = RM.reg_id)
		AND (RM.beg_date <= CL.cdate AND ISNULL(RM.end_date,'20400101') >= CL.cdate)
	   )	
  WHERE (CL.cdate BETWEEN @D1 AND @D2) AND (PA.build_id = @BldID)  
    AND (PA.beg_date <= CL.cdate AND ISNULL(PA.end_date,'20400101') >= CL.cdate)
    AND (RR.deleted = 0)
	AND (RR.rstat_id = 1)
  GROUP BY CL.cdate, PA.acc_id
  ) T2 ON CL.cdate = T2.cdate AND PA.acc_id = T2.acc_id

  WHERE (CL.cdate BETWEEN @D1 AND @D2) AND (PA.build_id = @BldID)

  RETURN
END
GO 
...
Рейтинг: 0 / 0
06.03.2018, 13:56
    #39611201
хм-хм-хм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
а если сделать вот так: sp_recompile 'dbo.fnRKCAccrEvidInd', ошибка будет повторяться?
...
Рейтинг: 0 / 0
06.03.2018, 16:30
    #39611324
лолл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
Прошу прощения за оффтоп, но это жуткий говнокод... по три раза обращаемся к одним и тем же таблицам и делаем одни и те же соединения, затем все это конкатенируем и выводим результат в виде табличной функции.... почему бы одинаковые куски кода не оформить в виде представлений/табличных переменных/inline-функций? Зачем читать одни и те же данные многократно? И зачем на каждой таблице проверки дат? неужели нельзя определить минимальный отрезок и один раз его проверить, да еще через сомнительные преобразования ISNULL(...,'20400101').. почему бы не писать IS NULL OR ... ?
...
Рейтинг: 0 / 0
06.03.2018, 16:37
    #39611332
Кусочек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
m71Кусочек
Код: sql
1.
SELECT * FROM dbo.fnRKCAccrEvidInd(2461224479, 2400001000083204900, N'20171201', N'20171231')



А такой вызов как-то влияет на результат?

Не влияет

Код: sql
1.
SELECT @@VERSION



Покажите результат запроса.
...
Рейтинг: 0 / 0
06.03.2018, 16:38
    #39611333
Гигабайт Мегабайтович Килобайтов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
нус... с таким кодом только "выворачивать фарш назад", т.е. писать тесткейсы, которые отловят параметры, при которых появляются "не правильные данные", а потом "разворачивать назад" всё функции.
...
Рейтинг: 0 / 0
06.03.2018, 23:39
    #39611556
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка в табличной функции
m71Определили, что на ошибку влияет входной параметр @D2 smalldatetime, который как-то не так попадает в функциюА точно @D2, не @D1?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Странная ошибка в табличной функции / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]