2015-11-06 72 views
1
CREATE OR REPLACE PROCEDURE ZAD_CZWARTE AS 

row_num number; 
sql_stmnt varchar2(200); 
cursor kursor is 
select table_name from user_tables; 
tab_name varchar2(200); 
BEGIN 

    FOR c_kur IN kursor LOOP 
    tab_name := c_kur.table_name; 
    --dbms_output.put_line(tab_name); 
    sql_stmnt :='SELECT COUNT(*) FROM :1'; 
    execute immediate sql_stmnt into row_num using tab_name; 
    DBMS_OUTPUT.PUT_LINE(tab_name||' : '||row_num); 

    END LOOP; 

END zad_czwarte; 

还有s a problem with execute immediate line. Anybody knows what有问题吗?一切对我来说似乎都很好。任务是输出用户的表格名称以及其中的行数。PL/SQL用光标立即执行参数

+0

可能重复[如何在EXECUTE IMMEDIATE查询中添加表名称?](http://stackoverflow.com/questions/8441064/how-to-add-a-table-名称即执行即时查询) –

回答

4

无法将物理表绑定为绑定变量。您的命令必须是sql_stmnt :='SELECT COUNT(*) FROM ' || tab_name;,然后execute immediate sql_stmnt into row_num;

+0

thx很多;)工作正常 – fearox