Estou com um outro problema com a procedure.
Ela recebe um parâmetro string para usar em uma cláusula where com IN, mais ou menos assim:
Where codigocliente in (psfiltro), onde codigocliente é smallint e psfiltro é char. O erro que me retorno é de conversão de character para numeric
Alguém sabe como posso solucionar esse problema????
[]´s
---------- Início da mensagem original -----------
De: [EMAIL PROTECTED]
Para: sqlwin@virtualand.net
Cc:
Data: Tue, 3 May 2005 14:56:45 -0300
Assunto: RES: RES: [sqlwin] Ajuda com informix
> Segue esquema geral simplificado de procedure Informix que retorna um recorde set:
> (não esqueça que no Informix os identificadores podem ter no máximo 18 caracteres):
> Create procedure sp_ReturnRecordSet(P1 , P2 , ..., PN )
> returning , , ..., ;
>
> define l_INTO_1 ;
> define l_INTO_2 ;
> ...
> define l_INTO_M ;
>
> foreach cursor1 with hold for
> Select ...Into l_INTO_1, l_INTO_2, ..., l_INTO_M
> From ... Where ...
> return l_INTO_1, l_INTO_2, ..., l_INTO_M with resume;
> end foreach
>
> End procedure;
>
> Se você tiver mais de uma consulta, terá de montar foreach's independentes, mas desde que, é claro,
> os dados retornados mantenham compatibilidade com a qtde e tipos de dados declarados na cláusula
> returning.
>
> Já no SQLWindows/Centura você a executa fazendo basicamente o seguinte:
> 1. SqlRetrieve(SQLHandle, "sp_ReturnRecordSet",":w_P1,w_P2,...,wPN","w_INTO_Ret1,w_INTO_Ret2,...,w_INTO_RetM")
> 2. SqlExecute(SQLHandle)
> 3. While SqlFetchNext(SQLHandle, l_n_Fetch)
> ...
> As variáveis: w_INTO_Ret1,w_INTO_Ret2,...,w_INTO_RetM
> terão os dados de cada membro do select em cada iteração.
> ...
>
> Sds,
> F.L.
>
> -----Mensagem original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de rlarizzatti
> Enviada em: terça-feira, 3 de maio de 2005 11:32
> Para: sqlwin
> Assunto: Re:RES: [sqlwin] Ajuda com informix
>
> Agradeço a ajuda de todos, mas ainda não consegui resolver o problema de sintaxe.
> Tentei criar um comando select dentro de cada if, iniciando com o foreach e terminando com o return pn_......
> end foreach;
> mas por algum motivo que não consigo descobrir, continua dando erro de sintaxe.
> Se alguém puder me ajudar, me mandando algumas sintaxes de informix, esquema de if, cursores, exception, etc... enfim, de tudo um pouco, ficarei muito grato, pois não conheço a linguagem e estrutura procedural do informix.......
>
> Mais uma vez, grato a todos pela boa vontade.
>
> ---------- Início da mensagem original -----------
> De: [EMAIL PROTECTED]
> Para: sqlwin@virtualand.net
> Cc:
> Data: Mon, 2 May 2005 20:08:37 -0300
> Assunto: RES: [sqlwin] Ajuda com informix
> > Ja faz alguns anos que não trabalho com Informix, mas numa das aplicações
> > que desenvolvi com Informix eu tinha um caso parecido com isto e resolvemos
> > criando um cursor para os diversos Select´s, sendo o nome do cursor era
> > sempre o mesmo e depois era so executar sem problemas.
> >
> > Abçs
> > -----Mensagem original-----
> > De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > nome de Fabio Lopes
> > Enviada em: segunda-feira, 2 de maio de 2005 19:14
> > Para: sqlwin@virtualand.net
> > Assunto: RES: [sqlwin] Ajuda com informix
> >
> >
> > Olá.
> >
> >
> >
> > Não é possível montar dinamicamente um comando numa procedure, pois seu
> > código é pré-compilado.
> >
> > No fluxo do código você tem de ter todas (se isso for possível) as
> > variações pré-estabelecidas:
> >
> >
> >
> > If QuerExecutarCmd1 then
> >
> > Select ... from ... where ...
> >
> > Else
> >
> > Select ... from ... where ...
> >
> > End if;
> >
> >
> >
> > Sds,
> >
> > F.L.
> >
> >
> >
> > -----Mensagem original-----
> > De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em
> > nome de rlarizzatti
> > Enviada em: segunda-feira, 2 de maio de 2005 16:20
> > Para: sqlwin
> > Assunto: Re:[sqlwin] Ajuda com informix
> >
> >
> >
> > Pessoal,
> >
> >
> >
> > Estou desenvolvendo uma procedure em informix que gera comandos de select
> > dinâmicos. Está com erro de sintaxe, e não sei qual seria o problema.
> >
> > É mais ou menos o seguinte, dependendo de alguns parâmetros que a
> > procedure receba, o select terá aguns campos, tabelas e cláusulas where.
> > Faço isso através de 'if' e seto os valores para para variáveis sSelect,
> > sFrom, sInto e sWhere.
> >
> > Por algum motivo, está com erro de sintaxe.
> >
> > Será que alguém teria um script que faça algo parecido, e que possa me
> > enviar para me ajudar?
> >
> >
> >
> > Agradeço qualquer ajuda.
> >
> >
> >
> > Abraço a todos
> >
>