Dynamic PL/SQL: counting rows function
From: Jochen Liekens <Jochen.Liekens_at_VlaamsParlement.be>
Date: Tue, 28 Jul 1998 18:17:27 +0200
Message-ID: <35BDF996.8E9082E7_at_VlaamsParlement.be>
Hi,
exception
end aantal_rec; Received on Tue Jul 28 1998 - 18:17:27 CEST
Date: Tue, 28 Jul 1998 18:17:27 +0200
Message-ID: <35BDF996.8E9082E7_at_VlaamsParlement.be>
Hi,
[Quoted] I'm trying to write a function that returns the number of rows of a sql select statement but it doesn't seem to work. The sql-statement is passed on as 2 parameters: tabel (the table) and a where-clause.
Can anybody help me out?
TIA. Jochen.
My code:
function aantal_rec(tabel in varchar2, where_clause in varchar2) return number
is
teller number:=0;
exec_cursor integer;
rows_processed number default 0;
sql_stmt varchar2(300);
begin
sql_stmt:='select count(*) from '||tabel||where_clause;
exec_cursor:=dbms_sql.open_cursor; dbms_sql.parse(exec_cursor, sql_stmt, dbms_sql.native ); [Quoted] dbms_sql.define_column(exec_cursor,1,teller,10); rows_processed := dbms_sql.execute(exec_cursor); while dbms_sql.fetch_rows (exec_cursor) > 0 loop dbms_sql.column_value (exec_cursor, 1, teller);dbms_sql.close_cursor( exec_cursor ); return (teller);
-- this previous line seems to give me problems
end loop;
-- I'm not sure if the loop is necessary
exception
when others then
if dbms_sql.is_open(exec_cursor) then dbms_sql.close_cursor(exec_cursor); end if; raise;
end aantal_rec; Received on Tue Jul 28 1998 - 18:17:27 CEST