我有一個存儲過程,其選擇行成出光標,像這樣:如何在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