Ricardo,

O nome da procedure em firebird não fica entre aspas (nem dupla nem simples), e 
não se usa varchar2 para firbird, use apenas varchar(n) onde 'n' é o numero Max 
de caracter que você deseja armazenar, se deixar apenas como varchar ele vai 
assumir '255' (padrão) o que não é recomendável fazer.

Espero ter ajudado

Mário

--- Em delphi-br@yahoogrupos.com.br, "Ricardo Mendes" <rickba...@...> escreveu
>
> Dae galerinha...td blz...
> Estou com o seguinte problema e to recorrendo a vcs...
> Eu costumo fazer esse tipo de procedure no oracle...e sempre ta tudo 100% 
> funcional...
> Mas agora preciso começar a usar o IB Expert para criar as procedures para a 
> Base em Firebird...e não estou conseguindo montar a procedure abaixo no IB 
> Expert...
> Alguém pode me ajudar?
> 
> Att.:
> Ricardo
> 
> 
> CREATE OR REPLACE PROCEDURE "SEL_FUNCIONARIO"
> ( PFILIAL IN VARCHAR2,
>   PCODIGO IN VARCHAR2,
>   PNOME IN VARCHAR2,
>   IOCURSOR OUT SYS_REFCURSOR
> ) AS
>   SQL_CONSULTA VARCHAR2(1000);
>   LNOME VARCHAR2(100);
> 
> BEGIN
>   SELECT REPLACE(PNOME, '+', '%') || '%' INTO LNOME FROM DUAL;
> 
>   SQL_CONSULTA := ' SELECT * ';
>   SQL_CONSULTA := SQL_CONSULTA ||' FROM FUNCIONARIO ';
>   SQL_CONSULTA := SQL_CONSULTA ||' WHERE 1 = 1 ';
> 
>   IF (PFILIAL IS NOT NULL) THEN
>     SQL_CONSULTA := SQL_CONSULTA || ' AND FILIAL= ''' || PFILIAL '''';
>   END IF;
> 
>   IF (PCODIGO IS NOT NULL) THEN
>     SQL_CONSULTA := SQL_CONSULTA || ' AND CODIGO = ''' || PCODIGO '''';
>   END IF;
> 
>   IF (LNOME IS NOT NULL) THEN 
>     SQL_CONSULTA := SQL_CONSULTA || ' AND LOWER(NOME) LIKE LOWER( 
> '''||LNOME|| ''')';
>   END IF;
> 
>   SQL_CONSULTA := SQL_CONSULTA || 'ORDER BY NOME ';
> 
> OPEN IOCURSOR FOR SQL_CONSULTA;
> 
> END SEL_FUNCIONARIO;
>


Responder a