Я пытаюсь выполнить следующий запрос в 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
, и это не помогло.