powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление процедуры
4 сообщений из 4, страница 1 из 1
Обновление процедуры
    #40096690
Aleksey br
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет. Появилась необходимость на ходу обновлять значения в хранимой процедуре через sqlcmd.
придумал вот такой подход:
Код: sql
1.
2.
3.
4.
5.
declare @existing varchar(6) SET @existing =  N'ааа'
declare @replacing varchar(30) SET @replacing =  'bbb'
declare @request varchar(8000) SET @request = N'"select Replace(Replace(OBJECT_DEFINITION(OBJECT_ID), @existing,@replacing), ''CREATE PROC'',''ALTER PROC'') FROM sys.procedures "'
set @request =  'sqlcmd -S SERVER -d DataBase -u -Q '+@request  SET NOCOUNT ON
EXEC master..xp_cmdshell @request , no_output


Но во-первых работает как-то криво - может, кто-то предложит вариант интересней, а во-вторых в процедурах содержится много комментариев и разделений, которые сделаны при помощи многих знаков тире: "-----вторая фаза--------", к примеру вот так. В виду того, что код в sqlcmd передается одной строкой, после первых двух тире подряд выполнение отваливается.
...
Рейтинг: 0 / 0
Обновление процедуры
    #40096696
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey br
Привет. Появилась необходимость на ходу обновлять значения в хранимой процедуре через sqlcmd.
придумал вот такой подход:
Код: sql
1.
2.
3.
4.
5.
declare @existing varchar(6) SET @existing =  N'ааа'
declare @replacing varchar(30) SET @replacing =  'bbb'
declare @request varchar(8000) SET @request = N'"select Replace(Replace(OBJECT_DEFINITION(OBJECT_ID), @existing,@replacing), ''CREATE PROC'',''ALTER PROC'') FROM sys.procedures "'
set @request =  'sqlcmd -S SERVER -d DataBase -u -Q '+@request  SET NOCOUNT ON
EXEC master..xp_cmdshell @request , no_output



Но во-первых работает как-то криво - может, кто-то предложит вариант интересней, а во-вторых в процедурах содержится много комментариев и разделений, которые сделаны при помощи многих знаков тире: "-----вторая фаза--------", к примеру вот так. В виду того, что код в sqlcmd передается одной строкой, после первых двух тире подряд выполнение отваливается.


для этого придумали параметры у ХП
...
Рейтинг: 0 / 0
Обновление процедуры
    #40096760
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey br,

автор на ходу обновлять значения

Вы так и до правки файлов баз можете дойти, если будете действовать в этом направлении. Используйте параметры процедуры или храните параметры в таблицах, как предписывает канон.
...
Рейтинг: 0 / 0
Обновление процедуры
    #40097060
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте неск. функций (по кол-ву типов данных: число, строка,дата и т.д.), которые по имени возвращают нужный параметр.

типа так: MyFuncStr('MyStrConst'), MyFuncDate('MyDateConst')...

В этом случае зачитку значений можно сделать сколь угодно сложной и максимально гибкой. А код ХП читабельным.
В т.ч. быстро искать, в какой ХП зачитывается нужная константа.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление процедуры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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