Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание SQL запроса с двумя временными таблицами в базе Oracle  (Прочитано 7804 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Red fox
Новенький

ru
Offline Offline

« : 19-07-2023 07:27 » 

Помогите, пожалуйста, выяснить причину ошибка в запросе SQL в базе Oracle. Суть запроса заключается в том, что созданы две временные таблица и между ними установлена соединение типа Left join, ниже приведен скрипт. Временные таблицы созданы не для примера.

Код:
CREATE GLOBAL TEMPORARY TABLE ExamTable (CODE INTEGER)
ON COMMIT DELETE ROWS;
INSERT INTO ExamTable VALUES ('2');
INSERT INTO ExamTable VALUES ('4');
INSERT INTO ExamTable VALUES ('3');
 
SELECT V.CODE , C.CATNAME
 
FROM ExamTable V
  LEFT JOIN (
              CREATE GLOBAL TEMPORARY TABLE ExTable (CODE INTEGER, CATNAME VARCHAR(10))
              ON COMMIT DELETE ROWS;
              INSERT INTO ExTable VALUES ('1','A');
              INSERT INTO ExTable VALUES ('2','B');
              INSERT INTO ExTable VALUES ('3','C');
              INSERT INTO ExTable VALUES ('4','D');
              SELECT B.* FROM ExTable B
              ) C ON C.CODE = V.CODE

Появляется следующая ошибка:
RA-00933: неверное завершение SQL-предложения
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 20 Column: 15

Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 19-07-2023 09:30 » 

А создать две таблицы?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Red fox
Новенький

ru
Offline Offline

« Ответ #2 : 19-07-2023 11:25 » 

Да, я попытался в скрипте создать две таблицы. Но запрос выдает ошибку.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 19-07-2023 12:11 » 

Да, я попытался в скрипте создать две таблицы. Но запрос выдает ошибку.
Какую ошибку?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Red fox
Новенький

ru
Offline Offline

« Ответ #4 : 19-07-2023 13:42 » new

RA-00933: неверное завершение SQL-предложения
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 20 Column: 15
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 19-07-2023 19:06 » 

прочитайте вслух ваш код!!!
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #6 : 20-07-2023 06:35 » 

Код:
RA-00933: неверное завершение SQL-предложения
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 20 Column: 15

я конечно не знаток оракла, но что-то подсказывает, что нельзя в селекте таблицы создавать. Если Вам эти временные таблицы нужны только для указанного запроса, то используйте CTE
что-то типа следующего

Код:
with ExamTable  as (
select '2' as CODE from dual union all
select 4' from dual union all
select '3' from dual
),
ExTable as (
              select '1' as CODE ,'A' as CATNAME from dual union all
              select '2','B' as CATNAME from dual union all
              select '3','C' as CATNAME from dual union all
              select '4','D' as CATNAME from dual
)
SELECT V.CODE , C.CATNAME
 
FROM ExamTable V
  LEFT JOIN ExTable  C ON C.CODE = V.CODE
Записан

I Have Nine Lives You Have One Only
THINK!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines