我有一个存储过程,其选择行成出光标,像这样:如何在oracle存储过程的输出中包含命名表的计数?
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
在user_tables
的table_name
列包含一个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;但我无法弄清楚如何有一个多列表变量。
使用动态SQL,请参阅http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm –
您是否需要近似行计数或确切的行数? – SriniV
准确的行数。我的问题不是我无法获得计数,而是我无法将其输入到输出光标中。 – Simon