All pastes #184013 Raw Edit

Anonymous

public text v1 · immutable
#184013 ·published 2006-09-27 13:42 UTC
rendered paste body
Recebe varchar,varchar,varchar,char


DECLARE 
          pnome             ALIAS FOR $1;
          putilidade        ALIAS FOR $2;
          pcidade           ALIAS FOR $3;
          pclifor_cfcorpore ALIAS FOR $4;
          r        RECORD;
          r2       tagenda1%rowtype;
          _sql TEXT;
          _sqlclifor_cfcorpore TEXT;
          _sqlagenda TEXT;
         
 BEGIN
 
        _sqlclifor_cfcorpore:='';
        _sql:=' WHERE ag_nome IS NOT NULL ';
        
 
        IF LTRIM(RTRIM(pnome))<>'' THEN

           _sql:=_sql||' AND ag_nome like '||quote_literal('%'||pnome||'%');

        END IF;
        
        IF LTRIM(RTRIM(putilidade))<>'' THEN

           _sql:= _sql||'  AND  ag_agenda.ag_agenda IN( select au_codagenda FROM ag_agendautilidade, ag_utilidade '||
                        ' WHERE ag_Agenda = au_codagenda AND au_utilidade = ut_utilidade '||
                        ' AND ut_descricao like '||quote_literal('%'||putilidade||'%')||')';
        END IF;

        IF LTRIM(RTRIM(pcidade))<>'' THEN

           _sql:= _sql||'  AND  ag_agenda.ag_agenda IN( select ag_agenda FROM ag_endereco, ag_cidade '||
                        ' WHERE ag_agenda.ag_agenda = en_agenda AND en_cidade = cd_cidade '||
                        ' AND cd_nome like '||quote_literal('%'||pcidade||'%')||')';
        END IF;
        
        _sql:=_sql||'ORDER BY ag_nome';
        
        IF pclifor_cfcorpore='S' THEN
           _sqlclifor_cfcorpore:=_sqlclifor_cfcorpore||' WHERE ';

           IF LTRIM(RTRIM(pnome))<>'' THEN
           
               _sqlclifor_cfcorpore:=_sqlclifor_cfcorpore||' razaosocial like '||quote_literal('%'||pnome||'%');
           
           END IF;
           
           IF LTRIM(RTRIM(pcidade))<>'' THEN

               _sqlclifor_cfcorpore:=_sqlclifor_cfcorpore||' cidade like '||quote_literal('%'||pcidade||'%');

           END IF;
           
          _sqlclifor_cfcorpore:=_sqlclifor_cfcorpore||' ORDER BY razaosocial ';
        
        END IF;

        -- raise warning '_sqlclifor_cfcorpore %',_sqlclifor_cfcorpore;

        IF pclifor_cfcorpore='S' THEN
           _sqlagenda:='SELECT * FROM f_consulta_agenda('||quote_literal(_sql)||',1,'||quote_literal(_sqlclifor_cfcorpore)||')';
        ELSE
           _sqlagenda:='SELECT * FROM f_consulta_agenda('||quote_literal(_sql)||',0,'||quote_literal(_sqlclifor_cfcorpore)||')';
        END IF;
        -- raise warning '_sqlagenda %',_sqlagenda;

        FOR r IN EXECUTE _sqlagenda LOOP
        
            r2.col1:=r.col1;
            r2.col2:=r.col2;
            r2.col3:=r.col3;
            r2.col4:=r.col4;
            r2.col5:=r.col5;
            r2.col6:=r.col6;
            r2.col7:=r.col7;
            r2.col8:=r.col8;
            r2.col9:=r.col9;

        		RETURN NEXT r2;

        END LOOP ;

        RETURN ;
 END ;