Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Manejo de Exception (https://www.clubdelphi.com/foros/showthread.php?t=33144)

BlueSteel 28-06-2006 16:23:06

Manejo de Exception
 
Hola.. estube revisando algunos ejemplos.. para poder crear unas store procedure... y encontre esto en el manual de interbase..

Código SQL [-]
CREATE PROCEDURE ADD_EMP_PROJ (EMP_NO SMALLINT, PROJ_ID CHAR(5))
AS
BEGIN
BEGIN
INSERT INTO EMPLOYEE_PROJECT (EMP_NO, PROJ_ID)
VALUES (:EMP_NO, :PROJ_ID);
WHEN SQLCODE -530 DO
EXCEPTION UNKNOWN_EMP_ID;
END
SUSPEND;
END

ahora tengo una duda con las siguientes lineas
WHEN SQLCODE -530 DO
EXCEPTION UNKNOWN_EMP_ID;


el procedimiento que hice es el siguiente

Código SQL [-]
CREATE PROCEDURE AGREGAR_CARGO (
    VORD_NUMERO VARCHAR(5) CHARACTER SET NONE,
    VCEN_CODIGO VARCHAR(4) CHARACTER SET NONE,
    VCAR_MONTO FLOAT,
    VCAR_OBSERVACION BLOB SUB_TYPE 0 SEGMENT SIZE 80)
AS
begin
   begin
        Insert into "Cargos" ("Ord_Numero", "Cen_Codigo", "Car_Monto", "Car_Observacion")
        values (:vord_numero, :vcen_codigo, :vcar_monto, :vcar_observacion);
   end;
   suspend;
end

si bien lo he probado en el IBExpert.. me funciona bien.. pero me gustaria saber como le agrego una exception... y como tendria que ser..

BlueSteel 28-06-2006 17:03:35

con respecto al mismo procedimiento... lo trato de ejecutar desde delphi de la siguiente forma

Código Delphi [-]
     For i:=0 to Asig_Costos.Costos_Paso.RowCount -1 Do
     Begin
          IBSP_Edit.StoredProcName := 'AGREGAR_CARGO';
          IBSP_Edit.Params.Clear;
          IBSP_Edit.Params[0].AsString := IBQ_Select['ORD_NUM'];
          IBSP_Edit.Params[1].AsString := Asig_Costos.Costos_Paso.Cells[0,i];
          IBSP_Edit.Params[2].AsFloat  := StrToFloat(Asig_Costos.Costos_Paso.Cells[2,i]);
          IBSP_Edit.Params[3].AsString := Asig_Costos.Costos_Paso.Cells[3,i];
          IBSP_Edit.Prepare;
          IBSP_Edit.ExecProc;
          IBT_SPEdit.Commit;
     End;

en donde Costos_Paso es un StringGrid que se encuentra en el Formulario Asig_Costos. Haciendo este proceso sin StoreProcedure me funcioba super bien...pero como soy porfiado.. quiero intentar almacenarlo con procedimientos :D :D :D

ahh.. el error que me da es el siguiente
Project Propint1.exe raised exception class ElisError with message 'List index out of bounds (0)'. Process stopped. Use step or run to continue


La franja horaria es GMT +2. Ahora son las 14:44:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi