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

Откуда:
Сообщений: 204
почему на строчку replace ругается БД. Привожу скрипт:

declare @TSQLc varchar(max), @tn varchar(100), @ln varchar(100), @spat varchar(100),
		@reps varchar(100);
  
SET @TSQLc = 'ALTER TABLE [oss].[t_test1]
              ADD [field29] varchar(max) NULL,
                  [field30] int';
                   
SET @tn    = 't_test1';
SET @ln    = 'oss';
  
SET @spat = '[' + @ln + ']' + '.' + '[' + @tn + ']';
SET @tn = @tn + '_h';
SET @reps = '[' + @ln + ']' + '.' + '[' + @tn + ']';
  
REPLACE(@TSQLc,@spat,@reps);
insert into t_test_h1 (code) values(@TSQLc);


выдает следующею ошибку: Incorrect syntax near 'REPLACE'. В чем ошибка?
28 ноя 14, 15:37    [16920149]     Ответить | Цитировать Сообщить модератору
 Re: скрипт(не работает replace)  [new]
Glory
Member

Откуда:
Сообщений: 104751
relav
выдает следующею ошибку: Incorrect syntax near 'REPLACE'. В чем ошибка?

в том, что REPLACE - это функция, а не команда
28 ноя 14, 15:39    [16920171]     Ответить | Цитировать Сообщить модератору
 Re: скрипт(не работает replace)  [new]
relav
Member

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

т.е мне нужно ее вызывать с помощью exec?
28 ноя 14, 15:43    [16920219]     Ответить | Цитировать Сообщить модератору
 Re: скрипт(не работает replace)  [new]
Glory
Member

Откуда:
Сообщений: 104751
relav
Glory,

т.е мне нужно ее вызывать с помощью exec?

Эта системная функция. Они не вызываются в exec. Они добавляются в тексты запросов/команд
Потому что они возвращают результат, который надо куда-то присвоить
28 ноя 14, 15:46    [16920255]     Ответить | Цитировать Сообщить модератору
 Re: скрипт(не работает replace)  [new]
Maxx_UA_from_Бан
Guest
declare @TSQLc varchar(max), @tn varchar(100), @ln varchar(100), @spat varchar(100),
		@reps varchar(100);
  

set  @TSQLc = REPLACE(@TSQLc,@spat,@reps);
insert into t_test_h1 (code) values(@TSQLc);
28 ноя 14, 15:49    [16920285]     Ответить | Цитировать Сообщить модератору
 Re: скрипт(не работает replace)  [new]
relav
Member

Откуда:
Сообщений: 204
Maxx_UA_from_Бан,

а как выполнить sql код программно. т.е. у меня есть sql код:
SET @TSQLc = 'ALTER TABLE [oss].[t_test1]
              ADD [field29] varchar(max) NULL,
                    [field30] int';



а теперь его нужно выполнить:
 EXECUTE @TSQLc; 
почему оно не работает?
28 ноя 14, 15:59    [16920409]     Ответить | Цитировать Сообщить модератору
 Re: скрипт(не работает replace)  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
relav
Maxx_UA_from_Бан,

а как выполнить sql код программно. т.е. у меня есть sql код:
SET @TSQLc = 'ALTER TABLE [oss].[t_test1]
 ADD [field29] varchar(max) NULL,
 [field30] int';




а теперь его нужно выполнить:
 EXECUTE @TSQLc; 

почему оно не работает?
Скобки
28 ноя 14, 15:59    [16920420]     Ответить | Цитировать Сообщить модератору
 Re: скрипт(не работает replace)  [new]
Glory
Member

Откуда:
Сообщений: 104751
relav
почему оно не работает?

Потому что
EXECUTE @TSQLc - это запуск процедуры, имя которое записано в переменной
А запуск запроса, текст которого записан в перемеенную, это EXECUTE(@TSQLc)

Вы не пробовали использовать хелп для выяснения таких вещей ?
28 ноя 14, 16:01    [16920439]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить