| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> update into loop
Dear friends
Im talking and write in spanish language, so, apologize me if my english is very poor.
I have a problem in a procedure that is in an application. Well, the procedure is:
PROCEDURE Sp_actualiza_exp_documentos (
Intid Expdntes.Id%TYPE,
Strobservacion IN Expdntes.Observacion_documento%TYPE,
Str_datos IN VARCHAR2,
Int_Res OUT NUMBER,
Str_user IN VARCHAR2
)
Intid_tdocumento Tipo_documento.Id_tdocumento%TYPE;
Intid_documento Documentos.Id_documento%TYPE;
Intpresentacion NUMBER;
Intnum_doc Expdntes_tdocumento.Num_documento%TYPE;
Strnombre_tdocumento Tipo_documento.Nombre%TYPE;
Strnombre_documento Documentos.Nombre%TYPE;
Strcadena_aux VARCHAR2 (10000);
Strcadena VARCHAR2 (10000);
Poscomma NUMBER;
BEGIN
Strcadena := Str_datos;
Strcadena_aux := Str_datos;
--int_cuenta:=0;
LOOP
Poscomma := INSTR (Strcadena, ',');
-----------------------------------------
IF Poscomma = 0
THEN
Strcadena_aux := Strcadena;
Strcadena := 'X';
ELSE
Intid_tdocumento :=
TO_NUMBER (SUBSTR (Strcadena, 1, Poscomma
- 1));
Strcadena :=
SUBSTR (Strcadena, Poscomma
+ 1, LENGTH (Strcadena));
END IF;
Poscomma := INSTR (Strcadena, ',');
-----------------------------------------
IF Poscomma = 0
THEN
Strcadena_aux := Strcadena;
Strcadena := 'X';
ELSE
Intid_documento :=
TO_NUMBER (SUBSTR (Strcadena, 1, Poscomma
- 1));
Strcadena :=
SUBSTR (Strcadena, Poscomma
+ 1, LENGTH (Strcadena));
END IF;
--------------------------------------------
Poscomma := INSTR (Strcadena, ',');
IF Poscomma = 0
THEN
Strcadena_aux := Strcadena;
Strcadena := 'X';
ELSE
Intnum_doc := TO_NUMBER (SUBSTR (Strcadena, 1, Poscomma
- 1));
Strcadena :=
SUBSTR (Strcadena, Poscomma
+ 1, LENGTH (Strcadena));
END IF;
-----------------------------------------
Poscomma := INSTR (Strcadena, ',');
IF Poscomma = 0
THEN
Strcadena_aux := Strcadena;
begin
Intpresentacion :=
TO_NUMBER (Strcadena);
EXCEPTION
when others then
Intpresentacion :=0;
end ;
Strcadena := 'X';
ELSE
Intpresentacion :=
TO_NUMBER (SUBSTR (Strcadena, 1, Poscomma
- 1));
Strcadena :=
SUBSTR (Strcadena, Poscomma
+ 1, LENGTH (Strcadena));
END IF;
Strcadena_aux := nvl(Strcadena,'X');
UPDATE Expdntes_tdocumento B
SET B.Presentacion = TO_CHAR (Intpresentacion),
B.Num_documento = Intnum_doc,
B.Usrio_mdfcdor = Str_user,
B.Fcha_mdfccion = SYSDATE
WHERE (B.Id = Intid) AND B.Id_tdocumento = Intid_tdocumento
AND B.Id_documento = Intid_documento;
EXIT WHEN (Strcadena = ',' OR Strcadena_aux = 'X') OR
Strcadena = 'X';
END LOOP;
UPDATE Expdntes
SET Observacion_documento = Strobservacion
WHERE Id = Intid;
Int_Res := 1;
EXCEPTION
WHEN OTHERS
THEN
Nstd_log_pkg.Sp_track_log (
SQLCODE,
'Sp_actualiza_exp_documentos',
SQLERRM,
'ORACLE'
);
Int_Res := 0;
**********************************************COMMENTS: *****************************
SET B.Presentacion = TO_CHAR (Intpresentacion),
B.Num_documento = Intnum_doc,
B.Usrio_mdfcdor = Str_user,
B.Fcha_mdfccion = SYSDATE
WHERE (B.Id = Intid) AND B.Id_tdocumento = Intid_tdocumento
AND B.Id_documento = Intid_documento;
but how can i test?
Any idea?
pls is important to me if you help me.
thanks a lot Received on Thu Jun 22 2006 - 18:58:14 CDT
![]() |
![]() |