Fixed my code, and it works now. Changed dbms_sql.native to dbms_sql.v7, and also changed some syntax.
create or replace procedure testing_j
(table_name in varchar2,
column1 in varchar2)
AS
lv_query varchar2(500);
lv_cursor number;
lv_col1 number(6);
loopcount number:=0;
cursor_return_value integer;
begin
lv_cursor:=dbms_sql.open_cursor;
dbms_output.put_line('Value assigned to cursor= ' || to_char(lv_cursor));
lv_query:='SELECT ' || column1 || ' FROM ' || table_name;
dbms_output.put_line(lv_query);
dbms_sql.parse(lv_cursor, lv_query, dbms_sql.v7);
dbms_sql.define_column (lv_cursor, 1, lv_col1);
cursor_return_value := dbms_sql.execute (lv_cursor);
LOOP
loopcount:=loopcount+1;
--dbms_output.put_line('loopcount= ' || loopcount );
if dbms_sql.fetch_rows (lv_cursor)=0 then
EXIT;
end if;
dbms_sql.column_value(lv_cursor, 1, lv_col1);
dbms_output.put_line(lv_col1);
END LOOP;
dbms_output.put_line('At end of loop');
dbms_sql.close_cursor(lv_cursor);
end;
/
PL/SQL procedure successfully completed.
SQL> execute testing_j ('PROJECT', 'PROJECT.P_ID');
Value assigned to cursor= 12
SELECT PROJECT.P_ID FROM PROJECT
1
1
2
3
3
4
4
5
5
6
7
7
At end of loop
PL/SQL procedure successfully completed.