次のように、行をアウト カーソルに選択するストアド プロシージャがあります。
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 でそれに結合することでした。しかし、複数列のテーブル変数を持つ方法がわかりません。