Ver Mensaje Individual
  #1  
Antiguo 06-11-2006
killaskto killaskto is offline
Registrado
 
Registrado: nov 2006
Posts: 2
Reputación: 0
killaskto Va por buen camino
Procedimientos Almacenados Oracle 10g

Hola!

Tengo una gran duda sobre como invocar un procedimiento almacenado desde delphi....

Estoy trabajando sobre delphi 7 y usando Oracle 10g XE, la conexion la hago mediante un AdoConnection y trato de usar un AdoStoredProc que vincule con el AdoConnetion, ya aparecen los procedimientos de la base, no aparecian parametros y cuando le di en Parameter automaticamente los creo. Estos dos parametros uno In y otro Out, el primero de tipo ftString (numericscale=0,precision=0,size=0)y el segundo ftBDC (numericscale=0,precision=15,size=0).

El procedimiento en oracle es:

CREATE OR REPLACE PROCEDURE PRO_NUEVO_NUMERO(NOMBRE_TABLA IN VARCHAR2,NUEVO_NUMERO OUT NUMBER)
AS
EXISTE NUMBER;
BEGIN
NUEVO_NUMERO:=1;
raise_application_error(-2000,'Entro hasta aqui');
LOOP
EXISTE:=0;
CASE NOMBRE_TABLA
WHEN 'CLIENTES' THEN
EXIT WHEN NUEVO_NUMERO=999;
SELECT COUNT(*) INTO EXISTE FROM CLIENTES WHERE ID_CLIE=NUEVO_NUMERO;
END CASE;
IF(EXISTE=0)THEN
COMMIT;
RETURN;
ELSE
NUEVO_NUMERO:=NUEVO_NUMERO+1;
END IF;
END LOOP;
NUEVO_NUMERO:=0;
COMMIT;
RETURN;
END PRO_NUEVO_NUMERO;

En Delphi lo que hago es que cuando se cree el formulario aparezca en un label el numero que devuelve el segundo parametro de la siguiente manera:

with stpProNuevoNumeroCliente do
begin
Parameters.ParamByName('NOMBRE_TABLA').Value:='CLIENTES';
Prepared:=True;
ExecProc;
NuevoNumeroCliente:=Parameters.ParamValues['NUEVO_NUMERO'];
end;
Label8.Caption:=IntToStr(NuevoNumeroCliente);

Cuando lo ejecuto manda este error: Project El_Barril.exe raised exception class EOleException with message '4f rh'. Process stopped. Use Step or Run to continue.

Paso a paso me doy cuenta que ese error lo genera inmediatamente despues de hacer ExecPorc.......

Si alguien me pudiera corregir o ayudar de antemano le doy las gracias.
Responder Con Cita