Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание и использование ВРЕМЕННЫХ процедур в одном батче. / 8 сообщений из 8, страница 1 из 1
29.04.2021, 12:08
    #40067159
AlexanP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
Вопрос:

Почему для временных процедур нельзя их создавать, использовать и удалять в одном батче как таблицы ?
create proc #P
as
begin
declare @s int
end
drop proc #P

А для временных таблиц ведь можно же так:
create table #T (s int)
drop table #T
...
Рейтинг: 0 / 0
29.04.2021, 12:56
    #40067192
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
AlexanP,

с чего Вы решили, что нельзя?
...
Рейтинг: 0 / 0
29.04.2021, 13:25
    #40067219
AlexanP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
create proc #P
as
begin
declare @s int
end
drop proc #P

Два раза запускам и получаем сообщение:

Msg 2714, Level 16, State 3, Procedure #P, Line 1 [Batch Start Line 0]
There is already an object named '#P' in the database.
...
Рейтинг: 0 / 0
29.04.2021, 13:29
    #40067221
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
AlexanP

А для временных таблиц ведь можно же так:
create table #T (s int)
drop table #T


Фигушки.
Низзя.
В процедуре.

Ну, т.е.
create table #T (s int)
drop table #T
можно.
Только ненужно drop table #T.

А вот
create table #T (s int)
drop table #T
create table #T (s int)

низзя.
...
Рейтинг: 0 / 0
29.04.2021, 13:50
    #40067238
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
AlexanP,

если в этом смысле, то время жизни временной таблицы - пакет, а процедуры - подключение. Некоторые DDL операции требуют выполнения в отдельном пакете, но в справке об этом я не нашел информации.
...
Рейтинг: 0 / 0
29.04.2021, 16:51
    #40067337
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create proc #P
as
begin
    DECLARE @s INT = 1
    SELECT @s AS s
END
drop proc #P
GO
EXEC #P



Похоже, строка
Код: sql
1.
drop proc #P

не выполняется, а становится частью текста процедуры.
...
Рейтинг: 0 / 0
29.04.2021, 16:52
    #40067338
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
Что, впрочем, ожидаемо
...
Рейтинг: 0 / 0
30.04.2021, 08:02
    #40067457
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
Тяп-ляп
Похоже, строка
Код: sql
1.
drop proc #P


не выполняется, а становится частью текста процедуры.

Документация на эту тему высказывается абсолютно однозначно:
Limitations and Restrictions
The CREATE PROCEDURE statement cannot be combined with other Transact-SQL statements in a single batch.
Соответственно, все прочие инструкции батча, невзирая на процедурные скобки, становятся частью ХП.
А вот для CREATE TABLE в документации упоминаний про подобные ограничения нет.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание и использование ВРЕМЕННЫХ процедур в одном батче. / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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