Синтаксическая ошибка в SQL * Plus - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь выполнить следующий запрос в SQL * Plus, но получаю ошибку.Однако тот же точный запрос прекрасно работает с Aqua Data Studio.

SQL> CREATE OR REPLACE VIEW VIEW_WARREPORT
  2  AS
  3  WITH WGS (WORKGROUPID, Root) AS (
  4     SELECT WorkgroupID, CONNECT_BY_ROOT WORKGROUPID "Root"
  5        FROM TPM_WORKGROUPS
  6        START WITH PARENTWORKGROUPID=0
  7        CONNECT BY PRIOR WORKGROUPID = PARENTWORKGROUPID)
  8
SQL>     SELECT
  2            WG.NAME as Workgroup,
  3            WG.WORKGROUPID,
  4            TP.AREAID,
  5            WGS.Root as RootWorkgroup,
  6            DM.NAME as DeliveryMethod,
  7            D.TASKID,
  8            --D.ISMARKERCOMPLETION,
  9            T.NAME as TaskName,
 10            T.DESCRIPTION as TaskDescription,
 11            T.SHORTNAME,
 12            COALESCE(T.COURSECODE, 'N/A') as CourseCode,
 13            (U.FIRSTNAME || ' ' || U.LASTNAME) as HQOwner,
 14            ((T.DELIVERABLELENGTHHOUR * 60) + T.DELIVERABLELENGTHMINUTE) as TaskMinutes,
 15            TP.STARTDATE, TP.ENDDATE
 16          FROM TPM_TRAININGPLAN TP
 17          INNER JOIN TPM_WORKGROUPS WG ON TP.WORKGROUPID = WG.WORKGROUPID
 18          INNER JOIN TPM_DELIVERYMETHODS DM ON TP.METHODID = DM.METHODID
 19          INNER JOIN TPM_TRAININGPLANDELIVERABLES D ON TP.TRAININGPLANID = D.TRAININGPLANID
 20          INNER JOIN TPM_TASK T ON D.TASKID = T.TASKID
 21          INNER JOIN TPM_PROJECTVERSION V ON (T.PROJECTID = V.PROJECTID AND T.VERSIONID = V.VERSIONID AND V.STAGEID !
= 11 AND V.STAGEID != 12 AND V.STAGEID != 13 AND V.STAGEID != 15)
 22          INNER JOIN TPM_USER U ON V.BUSINESSSPONSOR = U.USERID
 23          INNER JOIN WGS ON WGS.WORKGROUPID = TP.WORKGROUPID
 24          WHERE TP.SCHEDULED=1 AND TP.TRAININGPLANTYPE='actual'
 25          ORDER BY STARTDATE;
        INNER JOIN WGS ON WGS.WORKGROUPID = TP.WORKGROUPID
                   *
ERROR at line 23:
ORA-00942: table or view does not exist

Из того, что я могу сказать, ошибка в том, что WGS не существует.Но, как вы можете видеть, я создаю это в строке 3.

Я бегаю из-за недостатка сна и недостатка кофеина, поэтому шансы на то, что я сделаю что-то глупое, значительно перевешивают шансы на странный SQL * Plusошибка разбора, но мне все еще интересно, почему это работает в Аква.О, также, если я просто запускаю запрос, а не создание представления, я получаю ту же ошибку.

Спасибо!

ОБНОВЛЕНИЕ:

Хорошо, якажется, я вижу проблему.После предложения WITH начинается новый запрос.Итак, я думаю, мой вопрос: можно ли это предотвратить в SQL * Plus?Я пытался сделать несколько вещей, например, поставить точку с запятой после WORKGROUPID = PARENTWORKGROUPID, и это не помогло.

Ответы [ 2 ]

6 голосов
/ 10 января 2012

Из-за разрыва строки SQL * Plus запускает новый оператор. Удалите разрыв строки после строки 7, и все должно быть в порядке

2 голосов
/ 10 января 2012

Вы должны указать SQL * Plus, что он должен разрешать пустые строки с

SQL> set sqlblanklines on

, и все будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...