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

Откуда:
Сообщений: 84
В базе данные в таблице к примеру Table1 в ячейке query с типом text содержится скрипт типа
delete from table2 where id=@id
(в ячейках хранятся скрипты с количеством символов несколько десятков тысяч символов)

Как вызвать выполнение данной команды но перед выполнением заполнить переменную?

если я пишу скрипт типа

declare @id int, @str varchar(2000)

set @id=1

select @str= query from Table1

exec (@str)

результатом возвращается значение самой ячейки delete from table2 where id=@id
при этом вместо значения переменной остается сама переменная в результате чего скрипт выдает ошибку.

Возможно ли реализовать такую задачу?
17 июн 11, 14:01    [10828238]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
exec replace('delete from table2 where id=@id','@id',@id)
17 июн 11, 14:05    [10828266]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
Acce_Ekb
Member

Откуда: Екатеринбург
Сообщений: 87
См. sp_executesql
17 июн 11, 14:10    [10828302]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
Уленшпигель
Member

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

DECLARE @params varchar(100), @str varchar(1000), @par int

SET @par = 1
SET @Params = 'DECLARE @id int; SET @id = ' + CAST(@par as Varchar(10))+ ';'
SELECT @str= query from Table1
SET @params = @params + @str
EXEC @params
17 июн 11, 14:10    [10828303]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
DECLARE @object_id INT=OBJECT_ID(N'master.dbo.spt_values');
DECLARE @SQL NVARCHAR(MAX)=N'SELECT * FROM master.sys.objects WHERE object_id=@object_id';
EXECUTE sp_executesql @SQL,N'@object_id int',@object_id;
17 июн 11, 14:15    [10828345]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
goshua
Member

Откуда:
Сообщений: 84
А если скрипт который находится в ячейке очень большой (несколько мегабайт) и содержит переменные, можно их как то заполнять перед выполнением? Можно ли как то его выполнить через sp_executesql
20 июн 11, 07:23    [10838153]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
goshua
А если скрипт который находится в ячейке очень большой (несколько мегабайт) и содержит переменные, можно их как то заполнять перед выполнением? Можно ли как то его выполнить через sp_executesql
Да.
20 июн 11, 09:05    [10838303]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
goshua
Member

Откуда:
Сообщений: 84
alexeyvg
goshua
А если скрипт который находится в ячейке очень большой (несколько мегабайт) и содержит переменные, можно их как то заполнять перед выполнением? Можно ли как то его выполнить через sp_executesql
Да.


А как не подскажете??
20 июн 11, 09:08    [10838311]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31978
goshua
alexeyvg
Да.

А как не подскажете??
Вам написали уже:
iap
DECLARE @object_id INT=OBJECT_ID(N'master.dbo.spt_values');
DECLARE @SQL NVARCHAR(MAX)=N'SELECT * FROM master.sys.objects WHERE object_id=@object_id';
EXECUTE sp_executesql @SQL,N'@object_id int',@object_id;
20 июн 11, 10:04    [10838526]     Ответить | Цитировать Сообщить модератору
 Re: как выполнить скрипт который хранится в ячейке базы данных и содержит переменные  [new]
goshua
Member

Откуда:
Сообщений: 84
alexeyvg
goshua
пропущено...

А как не подскажете??
Вам написали уже:
iap
DECLARE @object_id INT=OBJECT_ID(N'master.dbo.spt_values');
DECLARE @SQL NVARCHAR(MAX)=N'SELECT * FROM master.sys.objects WHERE object_id=@object_id';
EXECUTE sp_executesql @SQL,N'@object_id int',@object_id;


А в SQL2000 как реализовать? Насколько я знаю в 2000 нельзя задать nvarchar(max)
20 июн 11, 10:59    [10838895]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить