0

次のように、行をアウト カーソルに選択するストアド プロシージャがあります。

PROCEDURE GetUserTables(
    out_cur    OUT SYS_REFCURSOR
)
AS
BEGIN
    OPEN out_cur FOR
        SELECT u.user_id, u.user_name, ut.table_name
          FROM users u
          JOIN user_tables ut ON ut.user_id = u.user_id
      ORDER BY u.user_name, ut.table_name;
END

table_name列にuser_tablesは DB テーブルの名前が含まれています。これらのテーブルの数を出力に含めたいと思います。次のようout_curなものが含まれます。

| user_id | user_name | table_name   | row_count |
+---------+-----------+--------------+-----------+
| 1       | Simon     | simons_dogs  | 1         |
| 1       | Simon     | simons_cats  | 0         |
| 2       | Jenny     | jennys_dogs  | 2         |
| 3       | Ellie     | ellies_dogs  | 3         |
| 3       | Ellie     | ellies_cats  | 1         |
| 3       | Ellie     | ellies_birds | 5         |

などsimons_dogsは実際のテーブルの名前です。

私が最初に考えたのは、プロシージャ内にテーブル変数を持ち、それに挿入する user_tables をループしてから、select でそれに結合することでした。しかし、複数列のテーブル変数を持つ方法がわかりません。

4

1 に答える 1