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; >