---------------------- 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)
==============================================