pl/sql - Using a dynamic query inside a stored procedure

后端 未结 3 1493
傲寒
傲寒 2020-12-18 11:31

I am using a stored procedure to insert data into a temp table using a cursor. This procedure stores a dynamic query inside a variable to mount the insert/update command.

3条回答
  •  南方客
    南方客 (楼主)
    2020-12-18 12:31

    I am using Oracle 11g , last couple of day I was facing problem of execute dynamic query in oracle procedure. I did search lots off. finally i have got solution .

    -- In blow procedure we pass multiple argument at run time 
    -- We need reference cursor for dynamic query execution
    create or replace  PROCEDURE FETCH_REPORT1_NEW(IPID IN number ,CAID IN number,
    ZOID IN  number,CLID IN number,SDATE VARCHAR2 , EDATE
    VARCHAR2,OUT_VALUE OUT VARCHAR2)
    
    IS
    
      l_sql varchar(200);   TYPE cursor_ref IS REF CURSOR;   c1
    cursor_ref;
    
      UZID transaction_data.zone_id%TYPE;   OUTAGE_MINS
    transaction_data.durationmin%TYPE;
    
    BEGIN
    
        l_sql := 'select  Avg (durationmin) , zone_id ,
         from transaction_data where  alarm_id in (1,21,26,20) and  zone_id not in(5)';
    
          IF IPID>0 THEN  
    
           l_sql := l_sql||' and  IP_ID = '||IPID;
    
          END IF;         
    
    
            l_sql := l_sql||' group by (zone_id)';
           open c1 for l_sql;
    
              loop
                  fetch c1 into OUTAGE_MINS,UZID;
    
                           dbms_output.put_line(OUTAGE_MINS||UZID);
    
                  exit when c1%notfound;
    
              end loop;
         close c1; 
        END;
    

提交回复
热议问题