5

私はSybaseでの経験が豊富で、自由な時間にoracleを調べ始めました。私が使用したほとんどのSybaseプロシージャには一時テーブルがあり、2つ以上の一時テーブルを結合して結果セットを取得するのは理にかなっています。

質問:論理テーブルのように2つ以上のカーソルを結合する方法はありますか?

何かのようなもの:

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

2 に答える 2

8

いいえ、2つのカーソルを結合することはできません。

もちろん、基礎となる2つのクエリを組み合わせることができます。

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では、リーダーはライターをブロックしないため(およびその逆)、一時テーブルを使用する必要はほとんどありません。通常は、適切なレベルの抽象化を提供するために、必要に応じてビューを使用して基になるテーブルにクエリを実行します。

于 2010-11-08T04:00:32.573 に答える
0

Oracleには、独自のバージョンの一時テーブル(トランザクションまたはセッションのいずれかの期間中に一時データが格納された永続構造)があります。これらの使用を検討できますが、(Justinが提案したように)2つの基礎となるクエリを組み合わせることもできます。

于 2010-11-08T12:18:16.590 に答える