вторник, 3 июня 2008 г.

Алиасы

При написании запросов мы используем алиасы для имен таблиц.


SELECT gcc.concatenated_segments
FROM gl_je_lines gjl
,gl_code_combinations_kfv gcc
WHERE gjl.code_combination_id = gcc.code_combination_id
AND ...

Алиасы настолько входят в нашу жизнь, что зачастую и в разговоре можно услышать
что-то вроде gcc, ccid, mmt, etc.
Так удобнее выражаться, коротко и кому надо - поймет.

Так почему бы не "научить" наш любимый редактор текста
(где мы пишем и выполняем запросы) этому языку.

Вот пример, как это можно сделать для SQL*Plus.
Добавим в login.sql следующие строчки:

DEFINE gcc="gl_code_combinations_kfv gcc"
DEFINE ccid="code_combination_id"
DEFINE gjl="gl_je_lines gjl"
DEFINE gjh="gl_je_headers gjh"
DEFINE mmt="mtl_material_transactions mmt"
...

Теперь тот же запрос написать гораздо проще:

SQL> select &cs
2 from &gjl, &gcc
3 where gjl.&ccid = gcc.&ccid
4 and ...

Можно пойти дальше и сделать алиасы для "любимых" подзапросов:

DEFINE ccname="SELECT gcc_.concatenated_segments -
FROM gl_code_combinations_kfv gcc_ -
WHERE gcc_.code_combination_id"
DEFINE user="SELECT fu_.user_name FROM fnd_user fu_ WHERE fu_.user_id"

Вот тот же запрос, плюс информация о пользователе, создавшем запись:

SQL> select (&ccname=gjl.&ccid) AS account
2 ,(&user=gjl.created_by) AS created_by
3 from &gjl
4 where ...