Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
greg123
- Сообщения: 2
- Зарегистрирован: 28 фев 2008, 20:17
Сообщение
greg123 » 28 фев 2008, 20:36
У меня есть такая процедура:
Код: Выделить всё
CREATE OR ALTER PROCEDURE PR_LPU (
ns varchar(15) character set win1251)
as
declare variable sqlstr varchar(600) character set win1251;
declare variable tek_gk integer;
begin
for select distinct l.n_gk from l where l.ns=:ns into tek_gk
do begin
SQLSTR = 'update l set l.err_code=l.err_code||1 '||
' where l.n_gk='||:tek_gk||' and l.err_code like '1%' and'||
' exists '||
'(select h.c from history h where h.c=l.c and'||
' h.gk'||:tek_gk||'=1 and h.date_beg<=l.date_vr and '||
' h.date_end>=l.date_vr)'||
' and l.ns='||:ns||';';
EXECUTE STATEMENT :SQLSTR;
end
end
Но условие " and l.err_code like '1%' " не работает, пробовал и like ''1%'' и вовсе без кавычек. То есть проблема как указать символ одинарной кавычки. Или возможна реализация данного запроса без использования EXECUTE STATEMENT?
Заранее спасибо.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 28 фев 2008, 21:00
Проблемы с проектированием БД.
Если поле нужно доставать по его номеру - явно что-то не так.
Сколько возможных значений принимает tek_gk? Если значений мало, то можно и в такой жуткой структуре извернуться одним апдейтом.
-
greg123
- Сообщения: 2
- Зарегистрирован: 28 фев 2008, 20:17
Сообщение
greg123 » 28 фев 2008, 21:17
Значения tek_gk от 0 до 3.
Если просто апдейтами, то у меня получилось черыре однотипных запроса.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 29 фев 2008, 10:52
И чего? Какая разница, в цикле ты построишь эти четыре апдейта, или руками напишешь?
Применять к месту и не к месту ES - плохо. Как для задачи, так и для твоего развития.
Hint: Применяя оператор CASE можно всё в 1 апдейт уместить.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 04 мар 2008, 11:30
Kotъ-Begemotъ писал(а):работает? В том же IBExpert ?
А что мешает? К названию таблицы можно обращаться как к алиасу, если ты не переобъявлял.
Или ты о чём?