create or replace procedure sp_test(i_tablename in varchar2) as iRowcount int; begin execute immediate 'select count(*) from '||i_tablename into iRowCount; dbms_output.put_line(iRowCount); end;
同意: create or replace procedure sp_test(i_tablename in varchar2) as iRowcount int; begin execute immediate 'select count(*) from '||i_tablename into iRowCount; dbms_output.put_line(iRowCount); end;
create or replace procedure calCounts(tablename char) as counts number; begin select count(*) into counts from tablename; dbms_output.put_line(counts); end calCounts;我写成这样子 不行?? 和你的区别在于哪里?
你的tablename是变量,不能直接用在select from后面,只能通过动态SQL来执行
create or replace procedure getcount(table_name in varchar2) as num number; sql_state varchar2(300); begin sql_state := 'select count(*) from '||table_name; execute immediate sql_state into num; dbms_output.put_line(num); end;
create or replace procedure sp_test(i_tablename in varchar2)
as
iRowcount int;
begin
execute immediate 'select count(*) from '||i_tablename into iRowCount;
dbms_output.put_line(iRowCount);
end;
create or replace procedure sp_test(i_tablename in varchar2)
as
iRowcount int;
begin
execute immediate 'select count(*) from '||i_tablename into iRowCount;
dbms_output.put_line(iRowCount);
end;
as
counts number;
begin
select count(*) into counts from tablename;
dbms_output.put_line(counts);
end calCounts;我写成这样子 不行?? 和你的区别在于哪里?
num number;
sql_state varchar2(300);
begin
sql_state := 'select count(*) from '||table_name;
execute immediate sql_state into num;
dbms_output.put_line(num);
end;