powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимые процедуры
4 сообщений из 4, страница 1 из 1
Хранимые процедуры
    #32023912
Maxus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день(утро, вечер, ночь..)!!!
Если не трудно, помогите пожалуйста!!!
Ситуация следующая - есть очень много хранимых процедур, текст которых отличается всего лишь названием таблицы.. Проблема - необходимо внести коррективы сразу во все хранимые процедуры (добавить выражение)..
Вопрос - Как получить доступ к тексту хранимых процедур из внешней программы (С++)??? Или с помощью средств SQL -сервера (2000)?
Заранее огромное спасибо!!
...
Рейтинг: 0 / 0
Хранимые процедуры
    #32023922
DAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-- Предлагаю процедуру, формирующую тексты всех (или одной) процедур текущей БД.
-- Из ее текста можно понять где Sql Server хранит тексты процедур, но если они
-- зашифрованы _ ничего не получится.

CREATE PROCEDURE SP_GenScrSP
-- Создание SQL скрипта создания/удаления процедур(ы).
@obj sysname=NULL -- Имя процедуры
-- Ошибки: 1 - неверный параметр
-- ****** 2 - несуществующий об'ект
-- 3 - скрипт не создан
AS set nocount on -- 4 - ошибка SQL сервера
declare @ID int, @r int, @p int, @OB sysname, @TTT sysname, @TXT varchar(8000),
@COLID int, @S varchar(1000),
@j int, @IDN int, @x char(1),@IDF int
declare @ResTab table (i int NOT NULL identity, t varchar(300) NULL)
-- 000000000000000000000000000000000000000000000000000000000000000000000000000
select @S='-- Drop & Create Objects. (c) "PolySystem" Kyiv'
select @S=@S+space(15)+convert(varchar(10),getdate(),104)+' '+
convert(varchar(5),getdate(),
insert into @ResTab values (@S)
select @S='-- ============================================'
select @S=@S+space(15)+'================'
insert into @ResTab values (@S) insert into @ResTab values ('go')
insert into @ResTab values ('')
-- ...........................................................................
declare cur_CreaProcDB cursor local for
select id,name from sysobjects where xtype = 'P' and status >= 0
and OBJECTPROPERTY(id, N'IsProcedure') = 1
and name =isnull(@obj,name) order by name
open cur_CreaProcDB
fetch next from cur_CreaProcDB into @ID,@OB
while (@@fetch_status != -1) begin
if (@@fetch_status != -2) begin
insert into @ResTab values ('if exists (select ''*'' from dbo.sysobjects'+
' where id = object_id(N'''+@OB+''') and')
insert into @ResTab values ('OBJECTPROPERTY(id, N''IsProcedure'') = 1)'+
' drop procedure '+@OB)
insert into @ResTab values ('go')
select @TXT=convert(varchar(4000),text) from syscomments
where id = @ID and colid = 1
select @r=charindex('create',@TXT),
@TXT=substring(@TXT,@r,datalength(@TXT)-@r+1),@p=datalength(@TXT)
while 1 = 1 begin
select @r=charindex(char(13),@TXT) if @r = 0 select @r=charindex(char(10),@TXT)
select @S=case when @r = 0 then @TXT else substring(@TXT,1,@r-1) end
if @r = 0 break insert into @ResTab(t) values(@S)
select @p=@p-@r if @p=0 begin select @S='' break end
select @TXT=substring(@TXT,@r+1,@p),@r=charindex(char(10),@TXT)
if @r = 1 begin select @p=@p-@r
if @p=0 begin select @S='' break end
select @TXT=substring(@TXT,@r+1,@p) end end
select @COLID=2 while 1 = 1 begin
select @TXT=NULL,@r=datalength(@S) set rowcount 1
select @TXT=convert(varchar(4000),text) from syscomments
where id = @ID and colid = @COLID set rowcount 0
select @COLID = @COLID+1,@p=datalength(isnull(@TXT,''))
if @p = 0 begin if @r > 0 insert into @ResTab(t) values(@S) break end
if @p = 0 break select @x=substring(@TXT,1,1)
if @x = char(13) or @x = char(10) begin
select @p=@p-1
if @p > 0 select @TXT=substring(@TXT,2,@p)
select @x=substring(@TXT,1,1)
if @x = char(13) or @x = char(10) begin
select @p=@p-1
if @p > 0 select @TXT=substring(@TXT,2,@p) end
if @r > 0 insert into @ResTab(t) values(@S) select @S='',@r=0
if @p = 0 break end
select @r=charindex(char(13)+char(10),@TXT),
@S=@S+case when @r = 1 then '' else substring(@TXT,1,@r-1) end,
@p=@p-@r-1,@TXT=substring(@TXT,@r+2,@p)
insert into @ResTab(t) values(@S)
while 1 = 1 begin
select @r=charindex(char(13),@TXT) if @r = 0 select @r=charindex(char(10),@TXT)
select @S=case when @r = 0 then @TXT else substring(@TXT,1,@r-1) end
if @r = 0 break insert into @ResTab(t) values(@S)
select @p=@p-@r if @p=0 begin select @S='' break end
select @TXT=substring(@TXT,@r+1,@p),@r=charindex(char(10),@TXT)
if @r = 1 begin select @p=@p-@r
if @p=0 begin select @S='' break end
select @TXT=substring(@TXT,@r+1,@p) end end end
insert into @ResTab values ('go')
insert into @ResTab values ('') insert into @ResTab values ('') end
fetch next from cur_CreaProcDB into @ID,@OB end
deallocate cur_CreaProcDB
-- ===========================================================================
select t from @ResTab order by i
if @@ROWCOUNT < 5 return 3 return 0
-- #### (c) "PolySystem" 26.09.99 #########################################
-- dalw@cis_kiev.com
...
Рейтинг: 0 / 0
Хранимые процедуры
    #32023925
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая уже написанная процедура, можно и её текст посмотреть.

sp_helptext
Prints the text of a rule, a default, or an unencrypted stored procedure, user-defined function, trigger, or view.

Syntax
sp_helptext [ @objname = ] 'name'
...
Рейтинг: 0 / 0
Хранимые процедуры
    #32023928
DAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я прекрасно об этом знал!! Мне нужны были все процедуры. можно конечно было_бы
зациклить через SYSOBJECTS через sp_helptext.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимые процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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