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

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

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

с чего Вы решили, что нельзя?
...
Рейтинг: 0 / 0
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
    #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
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
    #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
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
    #40067238
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexanP,

если в этом смысле, то время жизни временной таблицы - пакет, а процедуры - подключение. Некоторые DDL операции требуют выполнения в отдельном пакете, но в справке об этом я не нашел информации.
...
Рейтинг: 0 / 0
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
    #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
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
    #40067338
Тяп-ляп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что, впрочем, ожидаемо
...
Рейтинг: 0 / 0
Создание и использование ВРЕМЕННЫХ процедур в одном батче.
    #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
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание и использование ВРЕМЕННЫХ процедур в одном батче.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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