Создание хранимой процедуры из другой хранимой процедуры

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Создание хранимой процедуры из другой хранимой процедуры

Сообщение Qwertiy » 17.02.2012 (Пт) 22:17

Возможно ли сделать нечто типа
Код: Выделить всё
create procedure dbo.GenerateProcs
as
  create procedure GetSmth
  as
    select * from [Smth];
  return;
return
Если да, то как? VS2010, SQL Server.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Создание хранимой процедуры из другой хранимой процедуры

Сообщение FireFenix » 17.02.2012 (Пт) 23:17

http://msdn.microsoft.com/en-us/library/ms187926.aspx

Limitations and Restrictions

The CREATE PROCEDURE statement cannot be combined with other Transact-SQL statements in a single batch.
The following statements cannot be used anywhere in the body of a stored procedure.

CREATE AGGREGATE
CREATE SCHEMA
SET SHOWPLAN_TEXT
CREATE DEFAULT
CREATE or ALTER TRIGGER
SET SHOWPLAN_XML
CREATE or ALTER FUNCTION
CREATE or ALTER VIEW
USE database_name
CREATE or ALTER PROCEDURE
SET PARSEONLY
CREATE RULE
SET SHOWPLAN_ALL
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 18.02.2012 (Сб) 21:33

Неожиданно...
Спасибо.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Создание хранимой процедуры из другой хранимой процедуры

Сообщение HandKot » 24.02.2012 (Пт) 7:07

FireFenix писал(а):http://msdn.microsoft.com/en-us/library/ms187926.aspx

Limitations and Restrictions

The CREATE PROCEDURE statement cannot be combined with other Transact-SQL statements in a single batch.
The following statements cannot be used anywhere in the body of a stored procedure.

CREATE AGGREGATE
CREATE SCHEMA
SET SHOWPLAN_TEXT
CREATE DEFAULT
CREATE or ALTER TRIGGER
SET SHOWPLAN_XML
CREATE or ALTER FUNCTION
CREATE or ALTER VIEW
USE database_name
CREATE or ALTER PROCEDURE
SET PARSEONLY
CREATE RULE
SET SHOWPLAN_ALL



но никто не запрещал использовать динамический SQL

Код: Выделить всё
create procedure dbo.GenerateProcs
as
  Declare @SQL VarChar(8000)
  Set @SQL = '
  create procedure GetSmth
  as
    select * from [Smth];
  return;'

  Execute (@SQL)
return


PS: создание ХП внутри ХП не очень хорошая идея, попробуйте пересмотреть свой подход
I Have Nine Lives You Have One Only
THINK!

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 24.02.2012 (Пт) 23:24

HandKot писал(а):но никто не запрещал использовать динамический SQL

Интересный подход :)

HandKot писал(а):PS: создание ХП внутри ХП не очень хорошая идея, попробуйте пересмотреть свой подход

Я понимаю. Это задумывалось для генерации кода создания хранимых процедур, который можно легко выполнить в VS.

Спасибо :)


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 2

    TopList