2012-05-16 7 views

ответ

1

Вы можете создать представление SQL с помощью команды RUNSQLSTM, а затем выполнить запрос по представлению.

CREATE VIEW QTEMP/MYVIEW AS 
SELECT F1, CASE WHEN F2 <> ' ' THEN F2 ELSE F3 END AS FX FROM MYLIB/MYFILE 

Затем связать все это вместе с программой CL.

PGM 

DLTF FILE(QTEMP/MYVIEW) 
MONMSG MSGID(CPF0000) 
RUNSQLSTM SRCFILE(MYLIB/MYSRC) MBR(MYMBR) 
RUNQRY QRY(MYLIB/MYQRY) 

ENDPGM 
+0

Почему вы хотите удалять и воссоздавать представление каждый раз, когда выполняется запрос? – WarrenT

+0

@WarrenT Это просто личное предпочтение. Я не люблю оставлять редко используемые объекты постоянно на системе. – jamesallman

+0

Хорошо, если понятно, что нет накладных расходов с представлением над таблицей, поскольку он не поддерживает путь доступа с ключом. В примере кода вы удаляете представление из последнего времени, а затем повторно создаете его для этого запуска, но код не удаляет его. И, пытаясь уменьшить лишние ненужные объекты, вы создали дополнительный CL * pgm, который будет редко использоваться. Просто говорю. ;) – WarrenT

0

Возьмите look по адресу CASE, который должен сработать для вас.

CASE field 
    WHEN ' ' THEN newfield 
    ELSE field 
END as myfield 
+0

im not sure, если это то, что им ищет не заявление DB2 SQL для QUERY 400 – Houlahan

+0

Извините, я не думаю, что вы можете в 'WRKQRY'. Возможно, вам придется использовать SQL, чтобы делать то, что вы хотите. –

1

Запрос/400 устарел и должен считаться устаревшим. Он был заменен примерно на два десятилетия назад Query Management. Запросы Query/400 выполняются под старым оптимизатором базы данных (CQE) и не могут извлечь выгоду из более новых методов оптимизации, используемых новым оптимизатором (SQE). Рекомендуется перенести запросы Query/400 в QM Query или в DB2 Web Query.

К счастью, запросы на управление запросами могут быть созданы в запрошенном режиме, которые должны быть хорошо знакомы пользователям Query/400. Запросы в режиме запроса могут быть преобразованы в более мощный SQL-режим.

Вы можете использовать команду RTVQMQRY для генерации источника SQL из запрошенного запроса Query/400. После того, как у вас есть источник, вы можете использовать выражение CASE ... END, данное @Mike. Создайте запрос QM с помощью команды CRTQMQRY и запустите его с помощью STRQMQRY.

+0

Кроме того, если продукт SQL находится в системе, QM там без каких-либо дополнительных затрат. Но Query/400 ** является ** дополнительной стоимостью и обеспечивает меньшее количество функций и меньшую гибкость. – user2338816

1

Если вам все еще нужно это сделать, я могу показать вам, как это сделать за 3 прохода Query 400. Да, я знаю, что это не эффективно, но это можно сделать.

Смежные вопросы