Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Stored procedure / 7 сообщений из 7, страница 1 из 1
25.10.2002, 11:44:57
    #32061852
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stored procedure
Как скопировать процедуру, если длина >8000 симв.
...
Рейтинг: 0 / 0
25.10.2002, 12:15:16
    #32061865
antonz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stored procedure
поясните, пожалуйста!
...
Рейтинг: 0 / 0
25.10.2002, 12:24:16
    #32061867
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stored procedure
т.е. тело процедуры невозможно рассмотреть как значение одной переменной ( maximum length of varchar is 8000 ) . Необходимо процедуру из одной БД скопировать в другую .
...
Рейтинг: 0 / 0
25.10.2002, 12:26:00
    #32061869
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stored procedure
т.е. тело процедуры невозможно рассмотреть как значение одной переменной ( maximum length of varchar is 8000 ) . Необходимо процедуру из одной БД скопировать в другую .
...
Рейтинг: 0 / 0
25.10.2002, 13:08:48
    #32061891
antonz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stored procedure
declare @str1 varchar(8000),@str2 varchar(8000), ...
set @str1='create procedure .....'
exec @str1 + @srt2 + @str3
...
Рейтинг: 0 / 0
25.10.2002, 13:37:33
    #32061904
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stored procedure
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
25.10.2002, 21:15:17
    #32062085
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stored procedure
Код: 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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Stored procedure / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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