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-----
De: owner[EMAIL PROTECTED]net [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: 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 Fabio Lopes

> 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

>

Responder a