Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание SQL запроса с двумя временными таблицами, Временные таблицы имеют соединение left 
:(
    Опции темы
Redfoxx
Дата 19.7.2023, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.8.2016

Репутация: нет
Всего: нет



Помогите, пожалуйста, выяснить причину ошибка в запросе 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

PM MAIL   Вверх
LSD
Дата 24.7.2023, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: 18
Всего: 537



Внутри select нельзя выполнять DDL.

Код

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');

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 V.CODE , C.CATNAME
FROM ExamTable V
LEFT JOIN ExTable C ON C.CODE = V.CODE




--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0950 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.