まず、これはCTEとは何の関係もありません。この動作は、単純なselect * from table
でも同じです。 クエリ。違いは、T-SQLでは、クエリが暗黙カーソルに入り、呼び出し元に返されることです。 Management StudioからSPを実行する場合、これは便利です。結果セットは、クエリを直接実行したかのようにデータウィンドウに表示されます。しかし、これは実際には非標準の動作です。 Oracleには、「カーソルに向けられていないクエリの結果セットは変数に向けられなければならない」と言われる可能性のある、より標準的な動作があります。変数に向けられた場合、クエリは1行のみを返す必要があります。
T-SQLの動作を複製するには、カーソルを明示的に宣言して返す必要があります。次に、呼び出し元のコードは、カーソルから結果セット全体をフェッチしますが、一度に1行ずつフェッチします。 SqlDeveloperまたはPL/SQL Developerが結果セットをデータ表示ウィンドウに転送するという便利さは得られませんが、すべてを手に入れることはできません。
ただし、通常、IDEから呼び出されるだけのSPを作成することはないため、SQLServerの暗黙カーソルよりもOracleの明示カーソルを操作する方が簡単です。 「oraclereturnrefcursor to caller」をグーグルで検索するだけで、たくさんの優れた資料を入手できます。