powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выполнение нескольких EXEC
6 сообщений из 6, страница 1 из 1
Выполнение нескольких EXEC
    #32047928
Alex_VB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим есть ХП:

CREATE PROCEDURE dbo.DelCurrentTable
@NameTableOld sysname,
@NameTable varchar(100)
AS
if OBJECT_ID(@NameTableOld, 'U') IS NOT NULL
EXEC('DROP TABLE ' + @NameTableOld)
else
EXEC CreateNewTable @NameTable
GO

можно ли выполнить несколько директив EXEC подряд? Например удалить таблицу, и создать новую таблицую сразу после удаления, я делал вот так:

CREATE PROCEDURE dbo.DelCurrentTable
@NameTableOld sysname,
@NameTable varchar(100)
AS
if OBJECT_ID(@NameTableOld, 'U') IS NOT NULL
EXEC('DROP TABLE ' + @NameTableOld)
EXEC CreateNewTable @NameTable
else
EXEC CreateNewTable @NameTable
GO

но вылетает ошибка...
...
Рейтинг: 0 / 0
Выполнение нескольких EXEC
    #32047933
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавь в блок IF ... конструкцию BEGIN ... END
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE dbo.DelCurrentTable 
    @NameTableOld sysname, 
    @NameTable varchar( 100 ) 
    AS 
IF OBJECT_ID(@NameTableOld, 'U') IS NOT NULL BEGIN
    EXEC('DROP TABLE ' + @NameTableOld) 
    EXEC CreateNewTable @NameTable 
END
ELSE
    EXEC CreateNewTable @NameTable 
GO 

А правильнее было бы вообще так сделать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE dbo.DelCurrentTable 
    @NameTableOld sysname, 
    @NameTable varchar( 100 ) 
    AS 
IF OBJECT_ID(@NameTableOld, 'U') IS NOT NULL 
    EXEC('DROP TABLE ' + @NameTableOld) 

EXEC CreateNewTable @NameTable 
GO 

Зачем лишние команды?
...
Рейтинг: 0 / 0
Выполнение нескольких EXEC
    #32047940
Alex_VB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Команды не лишние...Просто в случае, если старая таблица существует, то я сначала удаляю старую, и тут же создаю новую, а в случае если старой таблицы нет, то просто создаю новую.
...
Рейтинг: 0 / 0
Выполнение нескольких EXEC
    #32047945
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так второй скрипт тоже самое делает, только там один раз EXEC CreateNewTable @NameTable используется.

О! Нашел ошибку. Правильно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE dbo.DelCurrentTable 
    @NameTableOld sysname, 
    @NameTable varchar( 100 ) 
    AS 
BEGIN
    IF OBJECT_ID(@NameTableOld, 'U') IS NOT NULL 
        EXEC('DROP TABLE ' + @NameTableOld) 

    EXEC CreateNewTable @NameTable 
END
GO 
...
Рейтинг: 0 / 0
Выполнение нескольких EXEC
    #32047948
Alex_VB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
...
Рейтинг: 0 / 0
Выполнение нескольких EXEC
    #32047950
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На здоровье
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выполнение нескольких EXEC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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