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

Откуда: Москва
Сообщений: 274
вот что запихано в @mysql

use A10
drop procedure [dbo].[s1]
Create PROCEDURE [dbo].[sj1] (@D1 char(8)) AS
select Sum(s) from ...

вылетает ошибка:

Сообщение 111, уровень 15, состояние 1, процедура sj000001, строка 4
CREATE/ALTER PROCEDURE должна быть первой инструкцией в пакетном запросе.

Как можно одинаковую процедуру записать в несколько однотипных баз?
7 авг 08, 14:12    [6039220]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
SuperJur
вот что запихано в @mysql

use A10
drop procedure [dbo].[s1]
Create PROCEDURE [dbo].[sj1] (@D1 char(8)) AS
select Sum(s) from ...

вылетает ошибка:

Сообщение 111, уровень 15, состояние 1, процедура sj000001, строка 4
CREATE/ALTER PROCEDURE должна быть первой инструкцией в пакетном запросе.

Как можно одинаковую процедуру записать в несколько однотипных баз?

А попробуй это же SSMS скормить? ;)
7 авг 08, 14:15    [6039236]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Имя Базы.Схема.Имя процедуры
7 авг 08, 14:15    [6039237]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
Про самое интересное скзать-то и забыл. Должно быть так
use A10
go
drop procedure [dbo].[s1] 
go
Create PROCEDURE [dbo].[sj1] (@D1 char(8)) AS 
select Sum(s) from ...
Боюсь, что DSQL не захочет кушать GO
7 авг 08, 14:17    [6039249]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
SuperJur
Member

Откуда: Москва
Сообщений: 274
пробовал Имя Базы.Схема.Имя процедуры
нельзя говорит.
go тоже не проходит.
7 авг 08, 14:20    [6039269]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
SuperJur
Member

Откуда: Москва
Сообщений: 274
CREATE/ALTER PROCEDURE не разрешает указание имени базы данных в качестве префикса к имени объекта.
7 авг 08, 14:21    [6039274]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Надо применить динамический SQL в динамическом же SQLе
EXECUTE(N'USE MyDB; EXECUTE(N''CREATE PROCEDURE MyProc AS PRINT ''''Это я, процедура ''''+DB_NAME()+''''..''''+OBJECT_NAME(@@PROCID)+''''!'''';'')');
7 авг 08, 14:31    [6039332]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
sp_msforeachdb 'Create PROCEDURE [dbo].[sj1] (@D1 char(8)) AS ....'
7 авг 08, 14:32    [6039344]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
Надо применить динамический SQL в динамическом же SQLе
EXECUTE(N'USE MyDB; EXECUTE(N''CREATE PROCEDURE MyProc AS PRINT ''''Это я, процедура ''''+DB_NAME()+''''..''''+OBJECT_NAME(@@PROCID)+''''!'''';'')');
Про запуск забыл:
EXECUTE MyDB..MyProc;
7 авг 08, 14:33    [6039348]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
SuperJur
Member

Откуда: Москва
Сообщений: 274
sp_msforeachdb 'Create PROCEDURE [dbo].[s1] (@D1 char(8)) AS select 1'
Сообщение 102, уровень 15, состояние 1, строка 3
Неправильный синтаксис около конструкции "sp_msforeachdb".
7 авг 08, 14:42    [6039417]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
>sp_msforeachdb 'Create PROCEDURE [dbo].[sj1] (@D1 char(8)) AS ....'

sp_msforeachdb контекст сама по себе не переключает из базы в базу.

Posted via ActualForum NNTP Server 1.4

7 авг 08, 14:50    [6039465]     Ответить | Цитировать Сообщить модератору
 Re: Как можно создать ХП через exec(@mysql)  [new]
SuperJur
Member

Откуда: Москва
Сообщений: 274
EXECUTE(N'USE MyDB;....
СРАБОТАЛО!!!!!

УРРаааа!!! Спасибо!!!!
7 авг 08, 14:52    [6039482]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как можно создать ХП через exec(@mysql)  [new]
RomanSH55
Member

Откуда:
Сообщений: 9
Прикольно - я получил точно такую же ошибку (ругается на go, + пишет, что Create Procedure д.б. первой инструкцией) написав на автомате:

DECLARE ......
OddFlag tinyint = 0,
......

Причём DECLARE у меня был длиннющий но на эти строки "он" не ругался
11 окт 09, 13:52    [7770165]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить