Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Glebded
Member

Откуда:
Сообщений: 21
есть пользовательский тип таблицы TbleForSkidka

есть функция
CREATE FUNCTION [dbo].[Zakaz_Get_Skidka]
(
@Tbl TbleForSkidka READONLY
)
RETURNS
@Table TABLE
(
[KK] [int] NOT NULL DEFAULT ((0))
)
AS
BEGIN
-- Нечего обрабатывать
INSERT INTO @Table ( KK )
VALUES ( (CASE WHEN (NOT EXISTS(SELECT * FROM @Tbl)) THEN 0 ELSE 1 END))

RETURN
END



есть процедура

....... много кода
DECLARE @Table TbleForSkidka
-- наливаю данные в таблицу
INSERT INTO @Table
(.........)
SELECT ...........

select * from @Table -- Проверяю что есть данные
SELECT * From Zakaz_Get_Skidka(@Table)
... много кода




ТАК ВОТ вопрос только первый раз SELECT * From Zakaz_Get_Skidka(@Table) при отладке показывает 1 (т.е. данные в таблице есть) далее данные кудато теряются при попадании в функцию, хотя при входе они есть

причем запуская в отладчике заново код пересоздания функции
ALTER FUNCTION [dbo].[Zakaz_Get_Skidka]
(
@Tbl TbleForSkidka READONLY
)
RETURNS
@Table TABLE
(
[KK] [int] NOT NULL DEFAULT ((0))
)
AS
BEGIN
-- Нечего обрабатывать
INSERT INTO @Table ( KK )
VALUES ( (CASE WHEN (NOT EXISTS(SELECT * FROM @Tbl)) THEN 0 ELSE 1 END))

RETURN
END

опять первый раз данные проходят, а второй и т.д. нет
Какие будут предложения по поводу пропихивания данных в функцию
17 май 13, 13:04    [14311142]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Glebded
Member

Откуда:
Сообщений: 21
Да забыл сказать при отладке кода
17 май 13, 13:07    [14311165]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Glebded
Member

Откуда:
Сообщений: 21
DECLARE @Tabl TbleForSkidka
INSERT INTO @Tabl (...) VALUES (...)
SELECT * FROM @Tabl

SELECT * FROM Zakaz_Get_Skidka(@Tabl)

Всегда показывается 1 т.е. данные всегда проходят. Такое впечатление что код до показанного участка все типа портит
17 май 13, 13:08    [14311176]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Crimean
Member

Откуда:
Сообщений: 13147
ну так сделайте короткий пример, чтобы все могли у себя сами попробовать
17 май 13, 13:19    [14311304]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Glebded
Member

Откуда:
Сообщений: 21
В том то и дело что пример работает, т.е. в функцию таблица с данными попадает всегда, а на реальной базе (там много кода и данных) только один раз, проверка на наличие данных стоит прямо перед входом в процедуру. Понимаю что это БАГ, т.к. написано все правильно. Ща буду козать по чуть чуть код может что получится
17 май 13, 14:31    [14312036]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Glebded
Member

Откуда:
Сообщений: 21
ПАРДОН! коцать (обрезать)
17 май 13, 14:32    [14312044]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Glebded
онимаю что это БАГ, т.к. написано все правильно. Ща буду козать по чуть чуть код может что получится

Баг - это то, что возпроизводится везде. А не где-то на одном сервере неизвестной версии
17 май 13, 15:01    [14312308]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса MS SQL Табличная функция с передачей таблицы  [new]
Glebded
Member

Откуда:
Сообщений: 21
Вопрос снят. Имя переменной @Table переименовал в @MyTable и все заработало как надо.
17 май 13, 15:20    [14312462]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить