Присоединить курсор или набор записей в оракуле - PullRequest
4 голосов
/ 08 ноября 2010

У меня хороший опыт в sybase, и я начал изучать оракула в свободное время. Большинство процедур sybase, с которыми я работал, имеют временные таблицы, и имеет смысл объединить две или более временных таблицы, чтобы получить набор результатов.

Вопрос: Есть ли способ объединить два или более курсоров, как логическая таблица.

Что-то вроде:

SELECT c1.id, 
       c2.name 
  FROM cursorEmp c1, 
       CursorDept c2 
 WHERE c1.DeptId = c2.DeptId

Ответы [ 2 ]

8 голосов
/ 08 ноября 2010

Вы не можете объединить два курсора, нет.

Вы, конечно, можете объединить два базовых запроса, например

SELECT c1.id,
       c2.name
  FROM (SELECT * FROM emp WHERE ename = 'KING') c1,
       (SELECT * FROM dept WHERE dname = 'ACCOUNTING') c2
 WHERE c1.DeptID = c2.DeptID

В Oracle, так как читатели не блокируют пишущих (наоборот) очень редко необходимо использовать временные таблицы.Обычно вы просто запрашиваете базовые таблицы, используя подходящие представления, чтобы обеспечить соответствующие уровни абстракции.

0 голосов
/ 08 ноября 2010

Oracle имеет свою собственную версию временных таблиц (постоянные структуры с временными данными, хранящимися во время транзакции или сеанса) - вы можете рассмотреть возможность их использования, хотя (как предположил Джастин) вы также можете объединить две основные запросы.

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