Código de SQL - Utilización de Transactions

Utilización de Transactionsgráfica de visualizaciones


SQL

estrellaestrellaestrellaestrellaestrella(3)
Publicado el 26 de Febrero del 2003 por Eduardo Alca
31.356 visualizaciones desde el 26 de Febrero del 2003. Una media de 49 por semana
Código de SQLServer para actualizar o añadir registros en una base de datos mediante transactions. Con control de errores.

Versión 1
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 26 de Febrero del 2003gráfica de visualizaciones de la versión: Versión 1
31.357 visualizaciones desde el 26 de Febrero del 2003. Una media de 49 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
************************************************************************
Ejemplo Simple de Como utilizar  la Instrucción Begin Transaction.
queremos actualizar el Archivo Programa en donde todos los Registros
que en la columna cod_prog=06 lo remplace por xx y enseguida se realiza un
insert
en el Archivo Nivel donde  se Observa un Error, tomando en cuenta que la
longitud del campo
cod_prog en el archivo nivel solo debe de ser de longitud 2,es así que en
este ejemplo se obtiene un error.
Para Saber si ocurrió un Error se Utiliza La Variable Global @@Error=0 es
por que no ha ocurrido ningún error
**********************************************************************+
begin transaction
update programa set cod_prog='xx' where cod_prog='06'
insert into nivel(cod_prog,cod_niv,nom_niv)
values("xxxx","01","dddddddddddddd")
if @@error <> 0
  begin
rollback transaction
return
  end
commit transaction
************************************************************************
Store Procedure que permite insertar un nuevo Alumno
Recibe los valores de cada campo como parametro, menos el Codigo
del alumno pues este se autogenera en el Procedimiento
notese que tambien utilizamos la Instrucción Begin Transaction
************************************************************************
create Procedure Sp_Ins_Alu
@Nombre nvarchar(40),
@Direccion nvarchar(30),
@Telefono char(8),
@Fecha_Naci smalldatetime,
@Sexo bit
as
declare @cont integer
declare @codigo char(6)
begin transaction
update parametro set valor=valor+1,@cont=valor+1 where campo='Cod_alum'
if @@error<>0
   begin
rollback transaction
return -1
   end
set @codigo="A"+right('00000'+convert(varchar(4),@cont),5)
insert into alumnos(cod_alum,nombre,direccion,telefono,fecha_naci,sexo)
values(@codigo,@nombre,@direccion,@telefono,@fecha_naci,@sexo)
if @@error<>0
begin
rollback transaction
return -1
end
commit transaction
return



Comentarios sobre la versión: Versión 1 (3)

manuel duran
20 de Abril del 2007
estrellaestrellaestrellaestrellaestrella
el procedimiento esta bien el proble es que cuando tienes varios procesos a seguir tienes que estar poniendo un if y un roll, yo declaro variables de errores al inicio y voy poniento debajo de cada instruccion
set @serror1=@@error y al final pregunto si if (@serrorr1+@serror2+@serror3)>0 hago un roll esto me evita mucho trabajo con los if espero que lo tomes en cuenta
Responder
JEsus
19 de Junio del 2007
estrellaestrellaestrellaestrellaestrella
Muy bueno y simple
Responder
alf
29 de Junio del 2007
estrellaestrellaestrellaestrellaestrella
malooo
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s539