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

Откуда:
Сообщений: 4564
Есть ХП.

1) Внутри ХП 1 используются курсоры с вызовом другой ХП 2, у которой в свою очередь есть параметр, который определяет, нужно ли возвращать набор записей.
2) Внутри ХП 2 используются временные таблицы.
3) Внутри ХП 2 в конце такая конструкция
IF @IsResultSelect = 0 SELECT 


Вопрос: почему, если при первом вызове ХП 2 не возвращать набор записей, то вываливается ошибка о ненахождении полей из этой процедуры?
Если же один раз вернуть значения, то потом все работает "как часы"?

MSSQL2008 R2
18 апр 18, 16:54    [21349608]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Gerasimenko
Вопрос: почему, если при первом вызове ХП 2 не возвращать набор записей, то вываливается ошибка о ненахождении полей из этой процедуры?
Каким приложением и какая именно ошибка выводится?
18 апр 18, 16:55    [21349616]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko,

автор
ненахождении полей из этой процедуры

может ошибку не пересказывая?
18 апр 18, 16:59    [21349636]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko,

автор
ненахождении полей из этой процедуры

может ошибку не пересказывая?

В таблице такой-то не найдено поле такое то.
Из первого же запроса в ХП 2
18 апр 18, 17:05    [21349666]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
Гавриленко Сергей Алексеевич
Gerasimenko
Вопрос: почему, если при первом вызове ХП 2 не возвращать набор записей, то вываливается ошибка о ненахождении полей из этой процедуры?
Каким приложением и какая именно ошибка выводится?

Из студии
18 апр 18, 17:05    [21349673]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko,

автор
ненахождении полей из этой процедуры

может ошибку не пересказывая?


Msg 207, Level 16, State 1, Procedure fGetReportOpenDay_1_203, Line 52
Invalid column name 'IsGroup'.
Msg 207, Level 16, State 1, Procedure fGetReportOpenDay_1_203, Line 52
Invalid column name 'TypeRow'.

и т.д.
18 апр 18, 17:07    [21349679]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko,

а временные таблицы создаете поди SELECT ... INTO #table FROM ?
18 апр 18, 17:09    [21349684]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko,

а временные таблицы создаете поди SELECT ... INTO #table FROM ?
Да
18 апр 18, 17:10    [21349690]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko
TaPaK
Gerasimenko,

а временные таблицы создаете поди SELECT ... INTO #table FROM ?
Да

решение очевидно? :)
ну и в вашей хп1 судя по всему есть таблица с таким же именем
18 апр 18, 17:11    [21349692]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...
Да

решение очевидно? :)
ну и в вашей хп1 судя по всему есть таблица с таким же именем

Нет. Одинаковых нет.
DROP TABLE # так же присутствует.

И мне не нужен возврат результатов в данном случае.
18 апр 18, 17:13    [21349695]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...
Да

решение очевидно? :)
ну и в вашей хп1 судя по всему есть таблица с таким же именем

Или вы не о темповых таблицах?
18 апр 18, 17:14    [21349701]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko
TaPaK
пропущено...

решение очевидно? :)
ну и в вашей хп1 судя по всему есть таблица с таким же именем

Нет. Одинаковых нет.
DROP TABLE # так же присутствует.

И мне не нужен возврат результатов в данном случае.

продолжайте фантазировать
18 апр 18, 17:14    [21349702]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...

Нет. Одинаковых нет.
DROP TABLE # так же присутствует.

И мне не нужен возврат результатов в данном случае.

продолжайте фантазировать
Сейчас еще раз проверю. Спасибо.
18 апр 18, 17:15    [21349707]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...

Нет. Одинаковых нет.
DROP TABLE # так же присутствует.

И мне не нужен возврат результатов в данном случае.

продолжайте фантазировать

Да, был фантазером и мечтателем (не Кремлевским :) )
Большое спасибо: затесалась-таки темповая таблица с одинаковым именем. После присвоения уникального имени: все заработало.
Еще раз большое спасибо!!!
18 апр 18, 17:24    [21349741]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko
TaPaK
пропущено...

продолжайте фантазировать

Да, был фантазером и мечтателем (не Кремлевским :) )
Большое спасибо: затесалась-таки темповая таблица с одинаковым именем. После присвоения уникального имени: все заработало.
Еще раз большое спасибо!!!

првильное решение это не прибить "вторую", а создавать объект через CREATE TABLE #table, а не как у вас
18 апр 18, 17:25    [21349746]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...

Да, был фантазером и мечтателем (не Кремлевским :) )
Большое спасибо: затесалась-таки темповая таблица с одинаковым именем. После присвоения уникального имени: все заработало.
Еще раз большое спасибо!!!

првильное решение это не прибить "вторую", а создавать объект через CREATE TABLE #table, а не как у вас

Много полей и много промежуточных результатов. МСДН не запрещает такой вариант.
18 апр 18, 17:27    [21349755]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko
TaPaK
пропущено...

првильное решение это не прибить "вторую", а создавать объект через CREATE TABLE #table, а не как у вас

Много полей и много промежуточных результатов. МСДН не запрещает такой вариант.

мда... "Следующий"
18 апр 18, 17:28    [21349761]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...

Да, был фантазером и мечтателем (не Кремлевским :) )
Большое спасибо: затесалась-таки темповая таблица с одинаковым именем. После присвоения уникального имени: все заработало.
Еще раз большое спасибо!!!

првильное решение это не прибить "вторую", а создавать объект через CREATE TABLE #table, а не как у вас

Тупо НЕвнимательность (усталость). Идентификаторы решают эти проблемы.
18 апр 18, 17:29    [21349764]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...

Много полей и много промежуточных результатов. МСДН не запрещает такой вариант.

мда... "Следующий"


автор
Procedure fGetReportOpenDay_1_203

Идентификатор 203, обеспечивающий уникальность. #tmpName_203 уникальна
18 апр 18, 17:32    [21349785]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko
TaPaK
пропущено...

мда... "Следующий"


автор
Procedure fGetReportOpenDay_1_203

Идентификатор 203, обеспечивающий уникальность. #tmpName_203 уникальна

продолжайте фантазировать
вот схема вашей ошибки
CREATE  PROC dbo.b
AS
	SELECT 1 as Id
	INTO #a
	
	SELECT * FROM  #a
	
	UPDATE #a SET Id = 2
GO


CREATE PROC dbo.a
AS
	CREATE TABLE #a (S INT)

	EXEC dbo.b

GO

EXEC dbo.a

DROP PROC dbo.b
DROP PROC dbo.a
18 апр 18, 17:38    [21349818]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
TaPaK
Gerasimenko
пропущено...


пропущено...

Идентификатор 203, обеспечивающий уникальность. #tmpName_203 уникальна

продолжайте фантазировать
вот схема вашей ошибки
CREATE  PROC dbo.b
AS
	SELECT 1 as Id
	INTO #a
	
	SELECT * FROM  #a
	
	UPDATE #a SET Id = 2
GO


CREATE PROC dbo.a
AS
	CREATE TABLE #a (S INT)

	EXEC dbo.b

GO

EXEC dbo.a

DROP PROC dbo.b
DROP PROC dbo.a

Только честно: Вы всегда делаете Create table #NameTable ?
p.s. Нет, это не фантазии. И да, в конце процедуры b есть Drop table #a.
18 апр 18, 18:07    [21349926]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Gerasimenko
Только честно: Вы всегда делаете Create table #NameTable ?

Кто не хочет собирать грабли, вроде ваших, тот делает.
Gerasimenko
p.s. Нет, это не фантазии. И да, в конце процедуры b есть Drop table #a.
Да хоть в начлае. Вы просто не понимаете, что проверка наличия полей для существующих объектов осуществляется на этапе компиляции, а не выполнения.

Вот так, к примеру, уже работает:

CREATE  PROC dbo.b
AS
	SELECT 1 as Id
	INTO #a
	
	SELECT * FROM  #a
	
	execute ('UPDATE #a SET Id = 2')

    select * from #a
GO


CREATE PROC dbo.a
AS
	CREATE TABLE #a (S INT)

	EXEC dbo.b

    select * from #a
GO

EXEC dbo.a

DROP PROC dbo.b
DROP PROC dbo.a
18 апр 18, 18:12    [21349941]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
Гавриленко Сергей Алексеевич
Gerasimenko
Только честно: Вы всегда делаете Create table #NameTable ?

Кто не хочет собирать грабли, вроде ваших, тот делает....

Да понял я. И изначально был уверен, что имя темповой таблицы уникально. 21349695 Но промахнулся.
В моем случае, меня вполне устраивает данный вариант. Ошибка исключена.
18 апр 18, 18:17    [21349959]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура с вариативностью результата  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Gerasimenko
TaPaK
пропущено...
[/src]

Только честно: Вы всегда делаете Create table #NameTable ?
.

да всегда, это избавляет от массы проблем. И отгораживание какими-то придуманными идентификаторами
вызывает только тошноту
автор
И да, в конце процедуры b есть Drop table #a.

"папа а дэ море"
18 апр 18, 21:40    [21350389]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить