Friday, December 23, 2011

Dynamic Sql

DECLARE      
      vl_str_sql VARCHAR2(255);
       vl_cnt   VARCHAR2(20);
BEGIN
     vl_str_sql  := 'SELECT count(*) FROM emp';
     EXECUTE IMMEDIATE vl_str_sql  INTO vl_cnt;
     dbms_output.put_line(vl_cnt);
END;


DECLARE
  TYPE
CUR_TYP IS REF CURSOR;
  c_cursor   CUR_TYPE;
  emp_rec   emp%ROWTYPE;
  v_query   VARCHAR2(255);
BEGIN
  v_query := 'SELECT * FROM emp';

  OPEN c_cursor FOR v_query;
  LOOP
    FETCH c_cursor INTO emp_rec;
    EXIT WHEN c_cursor%NOTFOUND;
    dbms_output.put_line(emp_rec.empno);
  END LOOP;
  CLOSE c_cursor;
END;

DECLARE 
TYPE cur_typ IS REF CURSOR;
  c_cursor     CUR_TYPE;
  emp_rec     emp%ROWTYPE;
  v_query      VARCHAR2(255);
  vl_manager VARCHAR2(3) := 'MANAGER';
BEGIN
  v_query := 'SELECT * FROM emp WHERE job = :job';
  OPEN c_cursor FOR v_query USING vl_manager;
  LOOP
    FETCH c_cursor INTO emp_rec;
    EXIT WHEN c_cursor%NOTFOUND;
    dbms_output.put_line(emp_rec.job);
  END LOOP;
  CLOSE c_cursor;
END;

No comments:

Post a Comment