
Сообщение от
imaex

В SQL нет никаких "declare". И быть не может, поскольку это не процедурный язык.
Ничего не понял...
Код:
IF EXISTS (SELECT TOP (1) * FROM [RSnew].[dbo].[DBData] WHERE ([StatusStop] = 0))
BEGIN
UPDATE [RSnew].[dbo].[DBData]
SET [DateTimeStart] = GETDATE(), [DateTimeStop] = GETDATE(), [StatusStart] = 1
WHERE [StatusStop] = 0
END
ELSE IF NOT EXISTS (SELECT TOP (1) * FROM [RSnew].[dbo].[DBData] WHERE ([StatusStart] = 1) and ([StatusStop] = 0))
BEGIN
declare
@String1 varchar(30),
@String2 varchar(30),
@String3 varchar(30),
@String4 varchar(30)
select
@String1 = [String1],
@String2 = [String2],
@String3 = [String3],
@String4 = [String4]
from
[RSnew].[dbo].[DBInfo]
INSERT INTO [RSnew].[dbo].[DBData] ([DateTimeStart], [DateTimeStop], [StatusStart], [StatusStop], [String1], [String2], [String3], [String4])
VALUES (GETDATE(), GETDATE(), 1, 0, @String1, @String2, @String3, @String4)
END
Я конечно не спец, но вот пример sql запросов которые я использую.
И как я помню я похожее вводил в MS4D и все работало пол года назад... Только для переменных там свои особенности были.
PS Вот из документации:
Код:
Синтаксис запросов для работы с базами данных
Есть два способа вставки данных в запрос:
•текст запроса {ИмяКанала} текст запроса..
•текст запроса {$ИмяКанала} текст запроса..
{CH} Данные и запрос передаются раздельно и "объединение" происходит на сервере БД.
Плюсы:
•Защита от SQL-"инъекций"
•Выполнение запроса происходит немного быстрее
Минусы:
•Не во все части sql запроса можно вставить. Например, сервер БД не позволит выполнить такой запрос: select {CH1} from {CH2}
{$CH} Данные из каналов напрямую вставляются в тело запроса в момент отправки на сервер.
Плюсы:
•Можно динамизировать запросы, т.е. писать запросы вида: select {$CH1} from {$CH2} where {$CH3} = {CH4}
Минусы:
•Подстановка происходит как есть, без экранирования спецсиволов. Если в CH1 будет текст вида 1; DROP TABLE test; select 1он отправится на сервер и успешно там выполнится
Может про это?