powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Stored procedure
7 сообщений из 7, страница 1 из 1
Stored procedure
    #32061852
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как скопировать процедуру, если длина >8000 симв.
...
Рейтинг: 0 / 0
Stored procedure
    #32061865
antonz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поясните, пожалуйста!
...
Рейтинг: 0 / 0
Stored procedure
    #32061867
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. тело процедуры невозможно рассмотреть как значение одной переменной ( maximum length of varchar is 8000 ) . Необходимо процедуру из одной БД скопировать в другую .
...
Рейтинг: 0 / 0
Stored procedure
    #32061869
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. тело процедуры невозможно рассмотреть как значение одной переменной ( maximum length of varchar is 8000 ) . Необходимо процедуру из одной БД скопировать в другую .
...
Рейтинг: 0 / 0
Stored procedure
    #32061891
antonz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @str1 varchar(8000),@str2 varchar(8000), ...
set @str1='create procedure .....'
exec @str1 + @srt2 + @str3
...
Рейтинг: 0 / 0
Stored procedure
    #32061904
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @str1 varchar(8000),@str2 varchar(8000), ..., @strN varchar(8000)
set @str1=[text] from syscomments where id = object_id('procname') and colnum = 1
set @str2=[text] from syscomments where id = object_id('procname') and colnum = 2
...
set @strN=[text] from syscomments where id = object_id('procname') and colnum = N

exec( @str1 + @srt2 + ... + @strN )
...
Рейтинг: 0 / 0
Stored procedure
    #32062085
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
 -- returns recordset (objid,ntext) 
 
 -- можно для удобства добавить поле идентити... ( но это сами ;) )
 
CREATE PROC SpToNtext
AS
SET NOCOUNT ON
DECLARE @m INT,@c INT,@q VARCHAR( 8000 ),@tname VARCHAR( 50 )
CREATE TABLE #r (i INT,t NTEXT)
SELECT o.[id] i, c.colid as [c],c.[text] t
INTO #t
FROM (SELECT [id] 
      FROM dbo.sysobjects 
      WHERE xtype='P'
      ) o JOIN dbo.syscomments c 
          ON o.[id] = c.[id]
 -- part 1 вставляем текст процек которые помещаются в одном поле
 
INSERT #r
SELECT i,t
FROM #t t
WHERE NOT EXISTS(SELECT * FROM #t WHERE #t.i=t.i AND #t.c> 1 )
DELETE #t FROM #r t WHERE #t.i=t.i
 -- part 2 остальные
 
SELECT @tname='##tmp'+CAST(@@PROCID AS VARCHAR( 30 )),
@c= 1 ,@q='',@m=MAX(t.c) FROM #t t
WHILE @m>=@c
BEGIN
  SELECT @q=@q+',t'+CAST(@c AS VARCHAR( 10 ))+' NTEXT DEFAULT('''')',@c=@c+ 1 
END
EXEC('CREATE TABLE '+@tname+' (i INT'+@q+')')
EXEC('INSERT '+@tname+' (i,t1) SELECT i,t FROM #t WHERE c=1 DELETE #t WHERE c=1')
SELECT @c= 2 ,@q=''
WHILE @m>=@c
BEGIN
  SELECT @q='UPDATE '+@tname+' SET t'+CAST(@c AS VARCHAR( 10 ))+
         '= t FROM #t WHERE '+@tname+'.i=#t.i AND #t.c='+
         CAST(@c AS VARCHAR( 10 ))+' DELETE #t WHERE c='+
         CAST(@c AS VARCHAR( 10 )),  @c=@c+ 1 
  PRINT @q
  EXEC(@q)
END
SELECT @c= 2 ,@q=''
WHILE @m>=@c
BEGIN
  SELECT @q=@q+' +CAST(t'+CAST(@c AS VARCHAR( 10 ))+' AS NVARCHAR(4000))',  @c=@c+ 1 
END
PRINT @q
EXEC('INSERT #r SELECT i,CAST(t1 AS NVARCHAR(4000))'+@q+' FROM '+@tname)
EXEC('DROP TABLE '+@tname)
SELECT * FROM #r 
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Stored procedure
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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