Exactly what you used as an argument in the first function.
"c1_rec" represents "select * from temp", right? Therefore, "?????" should be "temp%rowtype".
create or replace procedure f2 (p_rec in emp%rowtype) is
create or replace procedure f1 is
cursor c1 is select * from emp;
for c1r in c1 loop
if c1%notfound then exit;
This example will show all the employees in the "emp" table.
P.S. Do you really want to create a function? It requires a return value (your syntax doesn't have it).
You WERE selecting all the columns in the example you provided. However, never mind that ... Why do you not want to use global variables? You could create a record and put it into the package and it'll work.
But, if you really don't want to do it, perhaps you could split result you got by the cursor into several variables that will also be parameters in another procedure / function. For example:
CREATE OR REPLACE PROCEDURE f2
(p_no IN EMP.empno%TYPE, p_name IN EMP.ename%TYPE)
dbms_output.put_line(p_no ||' '|| p_name);
CREATE OR REPLACE PROCEDURE f1 IS
CURSOR c1 IS SELECT empno, ename FROM EMP;
FOR c1r IN c1 LOOP
IF c1%NOTFOUND THEN
l_no := c1r.empno;
l_name := c1r.ename;