Совет от жабы для Oracle Formatter - PullRequest
1 голос
/ 04 июня 2009

Что означает предупреждение?

Почему второй пример хуже первого?

SELECT   product_id, prod.name name, sample_id
  FROM   lims.sample JOIN lims.product prod USING (product_id)

против

SELECT   product_id, prod.name name, sample_id
  FROM   (SELECT   sample_id, product_id FROM lims.sample)
         JOIN lims.product prod
/* ADVICE: [131]  This item has not been declared, or it refers to a label */
            USING (product_id)

/* ADVICE:
ADVICE SUMMARY

Count  Recommendation
-----  --------------
    1  [131]  This item has not been declared, or it refers to a label
                  The Oracle equivalent error messages are  PLS-00320 and
                  PLS-0321.
*/

К вашему сведению: оба запроса работают нормально и возвращают одинаковые результаты.

Ответы [ 3 ]

1 голос
/ 05 июня 2009

Откладывая в таблицу количество данных, индексов и собранной статистики; в общем случае неопубликованные подзапросы должны превосходить вложенные подзапросы .

0 голосов
/ 12 июня 2009

Просто предположение, но во втором запросе ваш подзапрос не назван - попробуйте дать ему псевдоним; например:

SELECT   product_id, prod.name name, sample_id
  FROM   (SELECT   sample_id, product_id FROM lims.sample) samp
         JOIN lims.product prod
            USING (product_id)
0 голосов
/ 05 июня 2009

Мое предположение: похоже, TOAD не обрабатывает запрос так же, как Oracle.

В первом запросе, возможно, TOAD проверяет определения таблиц для lims.sample и lims.product и находит столбец "product_id" в обоих, так что все в порядке.

Во втором запросе TOAD не может проверить определение таблицы для первой части объединения, потому что это вложенный запрос; так что, возможно, он сдастся и даст вам этот совет (вот почему совет говорит: «... или это относится к ярлыку», который, вероятно, является компромиссом).

Я бы проигнорировал совет в этом случае, тем более что он работает нормально и возвращает те же результаты.

...