Fórum SP não aceita parâmetro no ORDER BY!!!!!! #56409

29/06/2006

0

Colegas..

Na seguinte SP

CREATE PROCEDURE SELECT_GP0100( I_ORDER VARCHAR(100) ) RETURNS( C_COD_GRUPO_PAT CHAR(15), C_DESC_GRUPO_PAT VARCHAR(100) ) AS begin for select C_COD_GRUPO_PAT, C_DESC_GRUPO_PAT from GP0100 order by :I_ORDER into :C_COD_GRUPO_PAT, :C_DESC_GRUPO_PAT do suspend; end


quando compilo dá erro na linha do order by...

como passo um parâmetro para o order by????

OBS : o firebird está instalado num servidor Linux..


Cabelo

Cabelo

Responder

Posts

30/06/2006

Sremulador

amigo, desta forma realmente não aceita...


Responder

Gostei + 0

30/06/2006

Cabelo

E como eu deveria fazer para passar um parâmetro para o order by?????


Responder

Gostei + 0

02/07/2006

Gandalf.nho

Acho que o único jeito seria usar EXECUTE STATEMENT, daí vc pode usar os parâmetros como deseja

EXECUTE STATEMENT sql_a_executar


Responder

Gostei + 0

03/07/2006

Cabelo

Fiz desta forma e deu erro :

CREATE PROCEDURE SELECT_BUSCA_CA0500( I_CAMPO_WHERE VARCHAR(100), I_VALOR_WHERE VARCHAR(150), I_ORDER VARCHAR(100) ) RETURNS ( C_COD_COLABORADOR CHAR(15), C_NOME_COLABORADOR VARCHAR(150), C_DESC_FUNCAO CHAR(150)) AS begin for EXECUTE STATEMENT ´select ´ || ´CA0500.C_COD_COLABORADOR, CA0500.C_NOME_COLABORADOR, CA0700.C_DESC_FUNCAO ´ || ´from CA0500 ´ || ´inner join CA0700 on (CA0700.C_COD_FUNCAO = CA0500.C_COD_FUNCAO) ´ || ´where UPPER(RTRIM(LTRIM(´ || :I_CAMPO_WHERE || ´))) LIKE ´ || ´UPPER(´ || ´´´¬´ || RTRIM(LTRIM( :I_VALOR_WHERE )) || ´¬´´´ || ´) ´ || ´order by ´ || :I_ORDER into :C_COD_COLABORADOR, :C_NOME_COLABORADOR, :C_DESC_FUNCAO do suspend; end


o erro foi o seguinte :

Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 12, char 7. EXECUTE.


Eu uso o firebird 1.5...

o que está errado??????


Responder

Gostei + 0

05/07/2006

Cabelo

Pessoal... desculpa aê... eu estava usando a versão 1.0 do firebird no servidor...

então... eu atualizei a versão... e deu certo...

CREATE PROCEDURE SELECT_BUSCA_CA0500( I_CAMPO_WHERE VARCHAR(100), I_VALOR_WHERE VARCHAR(150), I_ORDER VARCHAR(100) ) RETURNS ( C_COD_COLABORADOR CHAR(15), C_NOME_COLABORADOR VARCHAR(150), C_DESC_FUNCAO CHAR(150)) AS begin for EXECUTE STATEMENT ´select ´ || ´CA0500.C_COD_COLABORADOR, CA0500.C_NOME_COLABORADOR, CA0700.C_DESC_FUNCAO ´ || ´from CA0500 ´ || ´inner join CA0700 on (CA0700.C_COD_FUNCAO = CA0500.C_COD_FUNCAO) ´ || ´where UPPER(RTRIM(LTRIM(´ || :I_CAMPO_WHERE || ´))) LIKE ´ || ´UPPER(´ || ´´´¬´ || RTRIM(LTRIM( :I_VALOR_WHERE )) || ´¬´´´ || ´) ´ || ´order by ´ || :I_ORDER into :C_COD_COLABORADOR, :C_NOME_COLABORADOR, :C_DESC_FUNCAO do suspend; end


agora o problema é outro.. quando executo a SP no IBExpert dá o seguinte erro :

Unsuccessfull execution caused by an unavailable resource. Variable type (position 2) in EXECUTE STATEMENT ´select C_COD_COLABORADOR, C_NOME_COL´ INTO does no match return


como resolve o problema?????


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar