SP com função LIKE, problemas no retorno!!!!

Firebird

23/06/2006

Colegas... tenho a seguinte SP :

CREATE PROCEDURE SELECT_IN0100(
    C_VALOR_BUSCA VARCHAR(100),
    C_CAMPO_BUSCA VARCHAR(100))
RETURNS (
    C_COD_INSUMO CHAR(15),
    C_DESC_INSUMO VARCHAR(100),
    C_TIPO_INSUMO CHAR(1),
    C_CLASSE_INSUMO CHAR(15),
    C_MODELO_INSUMO VARCHAR(100),
    C_MARCA_INSUMO VARCHAR(100),
    C_QTD_EST_INSUMO FLOAT,
    C_QTD_EST_MIN_INSUMO FLOAT,
    C_QTD_EST_MAX_INSUMO FLOAT,
    C_SERIE_INSUMO VARCHAR(50),
    C_COD_EMB_MINIMA CHAR(2),
    C_CONTEUDO FLOAT,
    C_UNITARIO CHAR(2),
    C_EMBALAGEM_PADRAO CHAR(15),
    C_COD_UNIVERSAL CHAR(30))
AS
begin
  for select C_COD_INSUMO, C_DESC_INSUMO, C_TIPO_INSUMO, C_CLASSE_INSUMO, C_MODELO_INSUMO,
    C_MARCA_INSUMO, C_QTD_EST_INSUMO, C_QTD_EST_MIN_INSUMO, C_QTD_EST_MAX_INSUMO, 
    C_SERIE_INSUMO, C_COD_EMB_MINIMA, C_CONTEUDO, C_UNITARIO, C_EMBALAGEM_PADRAO,
    C_COD_UNIVERSAL from IN0100 where (UPPER(C_DESC_INSUMO)
    LIKE (UPPER(´¬´ || ´cart´ || ´¬´))) into
    :C_COD_INSUMO, :C_DESC_INSUMO, :C_TIPO_INSUMO,
    :C_CLASSE_INSUMO, :C_MODELO_INSUMO, :C_MARCA_INSUMO, :C_QTD_EST_INSUMO, 
    :C_QTD_EST_MIN_INSUMO, :C_QTD_EST_MAX_INSUMO, :C_SERIE_INSUMO, :C_COD_EMB_MINIMA,
    :C_CONTEUDO, :C_UNITARIO, :C_EMBALAGEM_PADRAO, :C_COD_UNIVERSAL do
  suspend;
end


e ela não retorna nenhum registro...

mas se eu retirar somente o select :

select C_COD_INSUMO, C_DESC_INSUMO, C_TIPO_INSUMO, C_CLASSE_INSUMO, C_MODELO_INSUMO,
    C_MARCA_INSUMO, C_QTD_EST_INSUMO, C_QTD_EST_MIN_INSUMO, C_QTD_EST_MAX_INSUMO, 
    C_SERIE_INSUMO, C_COD_EMB_MINIMA, C_CONTEUDO, C_UNITARIO, C_EMBALAGEM_PADRAO,
    C_COD_UNIVERSAL from IN0100 where (UPPER(C_DESC_INSUMO) LIKE (UPPER
     (´¬´ || ´cart´ || ´¬´)))


e executá-lo, retorna os dados corretamente...

alguém sabe me dizer onde estou errando?????

Agradeço a todos antecipadamente...


Cabelo

Cabelo

Curtidas 0

Respostas

Sremulador

Sremulador

23/06/2006

[quote]
for select C_COD_INSUMO, C_DESC_INSUMO, C_TIPO_INSUMO, C_CLASSE_INSUMO, C_MODELO_INSUMO, C_MARCA_INSUMO, C_QTD_EST_INSUMO, C_QTD_EST_MIN_INSUMO, C_QTD_EST_MAX_INSUMO, C_SERIE_INSUMO, C_COD_EMB_MINIMA, C_CONTEUDO, C_UNITARIO, C_EMBALAGEM_PADRAO, C_COD_UNIVERSAL from IN0100 where (UPPER(C_DESC_INSUMO) LIKE (UPPER(´¬´ || ´CART´ || ´¬´))) into :C_COD_INSUMO, :C_DESC_INSUMO, :C_TIPO_INSUMO, :C_CLASSE_INSUMO, :C_MODELO_INSUMO, :C_MARCA_INSUMO, :C_QTD_EST_INSUMO, :C_QTD_EST_MIN_INSUMO, :C_QTD_EST_MAX_INSUMO, :C_SERIE_INSUMO, :C_COD_EMB_MINIMA, :C_CONTEUDO, :C_UNITARIO, :C_EMBALAGEM_PADRAO, :C_COD_UNIVERSAL do suspend;



GOSTEI 0
Acacio

Acacio

23/06/2006

Testei aqui e funcionou. Como tais buscando, a procedure pode ser buscada numa query assim por exemplo:

select * from SELECT_IN0100(1,1)


GOSTEI 0
Cabelo

Cabelo

23/06/2006

Realmente funciona...

quando passo os parâmetros direto no select da SP... mas quando passo somente os parâmetrso via SQL... não retorna nada..

ex :

select * from SELECT_IN0100(´C_DESC_INSUMO´, ´cart´)

quando passo isso não retona nada... acredito é que o parâmetro C_CAMPO_BUSCA esteja sendo passado com os espaços em branco... por isso com os parâmetros direto no SQL funciona..

Existe uma função SQL como a função TRIM do Delphi????????


GOSTEI 0
POSTAR