Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
serkurenkov
Member

Откуда:
Сообщений: 28
Есть ли аналогичный скрипт для изменения функций и процедур?

Пример для таблиц.
exec sp_MSforeachtable "ALTER SCHEMA hem TRANSFER ? PRINT '? modified' "
GO

hem имя таблицы!
4 апр 13, 13:32    [14135529]     Ответить | Цитировать Сообщить модератору
 Re: Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Нагенерите сами скрипт запросом по sys.object.
4 апр 13, 13:38    [14135577]     Ответить | Цитировать Сообщить модератору
 Re: Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
serkurenkov
Member

Откуда:
Сообщений: 28
Ну могу разобраться с курсорами...


USE [Test_viezd]
GO
/****** Object:  StoredProcedure [hem].[adadadada]    Script Date: 04/08/2013 13:02:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER proc [hem].[adadadada]
	@command1 nvarchar(2000), @replacechar nchar(1) = N'?', @command2 nvarchar(2000) = null,
   @command3 nvarchar(2000) = null, @whereand nvarchar(2000) = null,
	@precommand nvarchar(2000) = null, @postcommand nvarchar(2000) = null
as
	/* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to its own result set */
	/* @precommand and @postcommand may be used to force a single result set via a temp table. */

	/* Preprocessor won't replace within quotes so have to use str(). */
	declare @mscat nvarchar(12)
	select @mscat = ltrim(str(convert(int, 0x0002)))

	if (@precommand is not null)
		exec(@precommand)

	/* Create the select */
   exec(N'declare hCForEachTable cursor for select ''['' + REPLACE(schema_name(syso.schema_id), N'']'', N'']]'') + '']'' + ''.'' + ''['' +
    REPLACE(object_name(o.id), N'']'', N'']]'') + '']'' from dbo.sysobjects o join sys.all_objects syso on o.id = syso.object_id
     JOIN sys.objects so ON so.object_id = syso.object_id '
         + N' WHERE OBJECTPROPERTY(so.object_id, N''SchemaId'') = SCHEMA_ID(N''Phox'') ' + N' and o.category & ' + @mscat + N' = 0 '
         + @whereand)
	declare @retval int
	select @retval = @@error
	if (@retval = 0)
		exec @retval = sys.sp_MSforeach_worker @command1, @replacechar, @command2, @command3, 0

	if (@retval = 0 and @postcommand is not null)
		exec(@postcommand)

	return @retval


Сообщение было отредактировано: 8 апр 13, 14:14
8 апр 13, 13:03    [14150877]     Ответить | Цитировать Сообщить модератору
 Re: Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
serkurenkov,

select 'ALTER SCHEMA hem TRANSFER Phox.' + quotename(so.name)
from sys.objects so
where so.schema_id = schema_id('Phox') and so.type in ('P', 'FN', 'IF', 'TF')

Нужные so.type подставьте сами, возможные значения можно посмотреть в документации по sys.objects, столбец type.
8 апр 13, 13:30    [14151075]     Ответить | Цитировать Сообщить модератору
 Re: Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
serkurenkov
Member

Откуда:
Сообщений: 28
Гость333,

DECLARE @SqlStatement1 VARCHAR( MAX)
SELECT @SqlStatement1 =
COALESCE(@SqlStatement1 , '' ) + 'ALTER SCHEMA hem TRANSFER Phox.' + quotename(so.name) + ';' + CHAR (13)
from sys.objects so
where so.schema_id = schema_id('Phox') and so.type in ('P', 'FN', 'IF', 'TF')

print @SqlStatement1


можно ли выполнить сразу все команды которые команда выдает в строках?
8 апр 13, 16:01    [14152268]     Ответить | Цитировать Сообщить модератору
 Re: Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
serkurenkov
можно ли выполнить сразу все команды которые команда выдает в строках?

Можно. А почему возник такой вопрос?
8 апр 13, 16:09    [14152343]     Ответить | Цитировать Сообщить модератору
 Re: Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
serkurenkov
Member

Откуда:
Сообщений: 28
жутко туплю)) exec))))))))))))))))))))
8 апр 13, 16:10    [14152360]     Ответить | Цитировать Сообщить модератору
 Re: Скрипт для изменения функций и процедур, есть ли простое решение?  [new]
serkurenkov
Member

Откуда:
Сообщений: 28
Гость333,
Спасибо огромное за помощь!!! Очень помогли!
8 апр 13, 16:11    [14152368]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить