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 <datatype>, P2 <datatype>, …, PN <datatype>) returning <datatype1>, <datatype2>, ..., <datatypeM>; define l_INTO_1 <datatype>; define l_INTO_2 <datatype>; … define l_INTO_M
<datatype>; 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----- 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: owner[EMAIL PROTECTED]net Para: [EMAIL PROTECTED]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: owner[EMAIL PROTECTED]net [mailto:[EMAIL PROTECTED] > nome de > Enviada em: segunda-feira, 2
de maio de 2005 19:14 > Para: [EMAIL PROTECTED]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: owner[EMAIL PROTECTED]net [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 > |
- Re:RES: RES: [sqlwin] Ajuda com informix Fabio Lopes
- Re:RES: RES: [sqlwin] Ajuda com informix rlarizzatti
- Re:RES: RES: [sqlwin] Ajuda com informix rlarizzatti