![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос в MSSQL [D6, MSSQL]
DA © (2004-08-23 17:59:00)
sql_string:='select ltb_sessions.sid,ltb_loadparams.name,'+
'if((ltb_loadparams.RowsCnt>ltb_loadparams.WORKACTS) or '+
'(ltb_loadparams.RowsLinkCnt>ltb_loadparams.WORKLINKS),'+
'''Не завершена'',''Завершена'') as LoadState, ltb_sessions.starttime, '+
'ltb_sessions.fintime, ltb_users.displayname,ltb_sessions.userid '+
' from ltb_sessions, ltb_loadparams,ltb_users '+
' where ltb_sessions.sid=ltb_loadparams.sid and ltb_sessions.userid=ltb_users.userid and ltb_sessions.stype=1 ORDER BY Sid DESC';
В MySql такой запрос отрабатывает нормально, в MSSQL валится, подскажите, где ошибка
Ega23 (2004-08-24 18:16:00) [1]На первый взгляд, вот это:
:VALUE
Параметр поставил?
DA (2004-08-24 17:54:00) [2]Спасибо!
Помогите еще с одним запросом, если нетрудно.Заранее благодарен.
UPDATE ltb_docs SET VALUE=:VALUE,TEXTSIZE='+IntToStr(len_text)+' WHERE CODE='+IntToStr(id_code)
Ошибка где-то около TEXTSIZE :)
сергей1 (2004-08-24 10:08:00) [3]согласен, просто МОА так написал ...
Ega23 (2004-08-24 09:50:00) [4]2 сергей1 (24.08.04 09:39) [6]
Но не в конструкции Select:
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
сергей1 (2004-08-24 09:39:00) [5]в T-SQL есть оператор if-then
Skyle (2004-08-24 09:38:00) [6]
> [4] Ega23 © (24.08.04 09:26)
Согласен ;-)
Ega23 (2004-08-24 09:26:00) [7]Подозреваю, что правильнее будет сделать несколько наоборот.
CASE...END AS LoadState.
Так больше похоже на то, чего автор вопроса хотел.
Это по ANSI SQL правилам. А диалект T-SQL разрешает конструкцию LoadState=CASE... Автор же на T-SQL пишет...
Skyle (2004-08-24 06:31:00) [8]
> LoadState= CASE ... END
Подозреваю, что правильнее будет сделать несколько наоборот.
CASE...END AS LoadState.
Так больше похоже на то, чего автор вопроса хотел.
Ega23 (2004-08-23 18:29:00) [9]
select S.sid, P.name,
LoadState= CASE
when ((P.RowsCnt>P.WORKACTS) or (P.RowsLinkCnt>P.WORKLINKS))
then 'Не завершена' else 'Завершена' end,
S.starttime, S.fintime, U.displayname, S.userid
from ltb_sessions S, ltb_loadparams P, ltb_users U
where S.sid=P.sid and S.userid=U.userid and S.stype=1
ORDER BY Sid DESC
Вроде так
MOA (2004-08-23 18:20:00) [10]В MS SQL нет функции if.
Необходимо либо переформулировать запрос (на первый взгляд - это можно сделать), либо используйте CASE
Удачи!