---------------------- Forwarded by Flavio Barrios/Procenge on 27/01/2000
09:18 ---------------------------


Flavio Barrios
27/01/2000 09:14

To:   [EMAIL PROTECTED]
cc:
Subject:  Problemas de interface do Centura com Packages no Oracle

Ol� J�nior,
Tudo bom?
Estou com um problema e gostaria saber se voc� sabe alguma coisa a respeito
deste.
Agrade�o a aten��o.

Fl�vio B�rrios
Procenge

Estou usando Centura 1.5.1 PTF1 e Oracle 8.05.
Quero chamar uma procedure que tem par�metros vari�veis arrays e escalares.
J� tentei diversas formas, mas n�o tenho resultado diferente sen�o um GPF
indicando que hou problemas na
dll do Centura sqlora32.dll.

As varia��es tentadas foram:

1. enviar s� arrays
2. Utilizar as fun��es SqlPLSQLCommand e as mais novas
SqlOraPLSQLPrepare,SqlOraPLSQLExecute e
    SqlOraPLSQLStringBindType .
3. Tentei utilizar arrays din�micos e est�ticos no centura mesclando com as
 chamadas acima.
4. agrupar os arrays por tipo de dados pois tinha feito um teste passando
vinte arrays como parametros tudo agrupado e tinha
    funcionado. S� que no centura, s� existiam tr�s vetores, de fato. Eu os
 repetia na chamada da package.
5. Checar se as vari�veis estavam corretas no  comando. Mas se n�o
estivessem dava logo um erro no "Prepare".

A �nica forma que consegui, foi passar os itens do array um de cada vez. O
que eu sabia que funcionava. Mas h� uma perda
na performance. Pois toda vez o camando PLSQL tem que ser analisado pelo
Oracle.



Fonte Centura:
!Variables definitions

String: sFilial
String: sEmpresa
String: sTipoDocno
String: sSerDocno
String: sDocno
Number: nNdoPorDocno
Number: nDtMovPorDocno
String: sNdoDocno
Date/Time: dDtMovDocno
!
String: asCodProd[1:1000]
String: asCodDep[1:1000]
String: asUniMedOper[1:1000]
Number: anQtdMov[1:1000]
Number: anUltCustoEntra[1:1000]
Date/Time: adDtMovItem[1:1000]
String: asNdoItem[1:1000]
_______________________________________________________________
%%%
_______________________________________________________________


Set sCommand =
'PCK_PIR_ESTOQUE.Atender(sFilial,sEmpresa,sTipoDocno,sSerDocno,sDocno,nNdoP
o
     rDocno,nDtMovPorDocno,sNdoDocno,

dDtMovDocno,asCodProd,asCodDep,asUniMedOper,anQtdMov,anUltCustoEntra,adDtMo
v
     Item,asNdoItem,nResult)'
When SqlError
     Return FALSE
If NOT SqlPLSQLCommand( hSqlComum, sCommand )
     Return PFC_Error;
_______________________________________________________________
%%% also I tried to use the functions SqlOraPLSQLPrepare ,
SqlOraPLSQLStringBindType and SqlOraPLSQLExecute.
_______________________________________________________________


Source PLSQL:

TYPE t_asProduto IS TABLE OF varchar(13) INDEX BY BINARY_INTEGER;
TYPE t_asDeposito IS TABLE OF varchar(2) INDEX BY BINARY_INTEGER;
TYPE t_asUnimed IS TABLE OF varchar(3) INDEX BY BINARY_INTEGER;
TYPE t_anFloat IS TABLE OF number INDEX BY BINARY_INTEGER;
TYPE t_adDate IS TABLE OF DATE INDEX BY BINARY_INTEGER;
TYPE t_asNdo IS TABLE OF varchar(6) INDEX BY BINARY_INTEGER;


Procedure Atender(
p_sFilial IN EMPRESA.EMPRESA%TYPE,
p_sEmpresa IN EMPRESA.EMPRESA%TYPE,
p_sTipoDocno IN DOCUMENTO.CODIGO%TYPE,
p_sSerDoc IN TRANSACAO.SERDOC%TYPE,
p_sDocno IN TRANSACAO.NUMDOC%TYPE,
p_nNdoPorDocno IN NUMBER,
p_nDtMovPorDocno IN NUMBER,
p_sNdoDocno IN NDO.CODIGO%TYPE,
p_dDtMovDocno IN DATE,
p_asCodProd IN t_asProduto,
p_asCodDep IN t_asDeposito,
p_asUnimedOper IN t_asUnimed,
p_anQtdMov IN t_anFloat,
p_anUltCustoEntra IN t_anFloat,
p_adDtMovItem IN t_adDate,
p_asNdoItem IN t_asNdo,
r_nError IN OUT NUMBER);





==============================================
Lista de Centura SQLWindows
Administrador : [EMAIL PROTECTED]
[ http://www.centuraexplorer.com ]
Para sair desta lista mande mensagem para:
[EMAIL PROTECTED] sem nada no Subject e
com o comando a seguir no corpo da msg:
"unsubscribe sqlwin" (sem as aspas)
==============================================

Responder a