SQL Server - varios update en un mismo procedimiento almacenado

 
Vista:

varios update en un mismo procedimiento almacenado

Publicado por ruben (1 intervención) el 13/07/2017 09:49:18
Muy buenas a to@s!, espero que puedan ayudarme.

El problema al que me enfrento es el siguiente, quiero realizar varios update dentro de un procedimiento almacenado, pero solo me ejecuta el primero. Os muestro el codigo para que vean como lo hago.

Gracias de antemano por la ayuda.

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
55
56
57
58
ALTER PROCEDURE [dbo].[TRAGSEGA_ORDENES]  @fechadesde AS datetime AS
 
BEGIN
select COCOEX AS 'SUBEXPLOTACION',CONREG,COFEAC,EXESPE,OPTIPR,prdesc,OPTICS,santicos.csdesc as 'desc tipo',OPCOSA,sib_sibconsa.csdesc,CONUME,opdeta,coobse,COFECA,conumu
FROM DIL_CORDEN
INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX
left JOIN DIL_ORDPEN ON CONREG=OPNREG
left JOIN SANTIPRO ON opTIPR = PRPROC
left join santicos on optics = cstics AND optipr=csproc
left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe
where COFECA >convert(datetime,@fechadesde,103) AND EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)<>'3'
 
UNION
select COCOEX AS 'SUBEXPLOTACION',CONREG,COFEAC,EXESPE,OPTIPR,prdesc,OPTICS,santicos.csdesc as 'desc tipo',OPCOSA,sib_sibconsa.csdesc,CONUME,opdeta,coobse,COFECA,conumu
FROM DIL_CORDEN_o
INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX
left JOIN DIL_ORDPEN_o ON CONREG=OPNREG
left JOIN SANTIPRO ON opTIPR = PRPROC
left join santicos on optics = cstics AND optipr=csproc
left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe
where COFECA >convert(datetime,@fechadesde,103) AND  EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)<>'3'
ORDER BY CONREG
 
END
 
BEGIN
UPDATE JSF_DIL_CORDEN
SET GRABADO = CONCAT('Grabado: ',CONVERT(varchar(10),getdate(),103))
where CONREG in (select distinct CONREG
FROM DIL_CORDEN
INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX
left JOIN DIL_ORDPEN ON CONREG=OPNREG
left JOIN SANTIPRO ON opTIPR = PRPROC
left join santicos on optics = cstics AND optipr=csproc
left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe
where COFECA >convert(datetime,@fechadesde,103) AND EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)<>'3'
)
/*Actualizo el campo isGrabada a 1*/
update JSF_DIL_CORDEN
set ISGRABADA = 1
where GRABADO in (select GRABADO from JSF_DIL_CORDEN where GRABADO like '%Grabado%')
END
 
BEGIN
UPDATE JSF_DIL_CORDEN_O
SET GRABADO = CONCAT('Grabado: ',CONVERT(varchar(10),getdate(),103))
where CONREG in (select distinct CONREG
FROM DIL_CORDEN_O
INNER JOIN SIB_SIBEXPLO ON COCOEX=EXCOEX
left JOIN DIL_ORDPEN ON CONREG=OPNREG
left JOIN SANTIPRO ON opTIPR = PRPROC
left join santicos on optics = cstics AND optipr=csproc
left join sib_sibconsa on opcosa = cscodi AND opcoes=csespe
where COFECA >convert(datetime,@fechadesde,103) AND EXESPE IN ('01','03','04','23','24','25','82') AND SUBSTRING(CONREG,5,1)<>'3'
)
END
 
GO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2
Ha disminuido 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

varios update en un mismo procedimiento almacenado

Publicado por Manuel Hernandez (2 intervenciones) el 13/07/2017 15:56:49
Es porque tienes varios begin y end, estos delimitan las instrucciones del procedimiento, solo deberías tener el begin al principio y el end hasta el final. Tienes que quitar los que tienes en medio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.530
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

varios update en un mismo procedimiento almacenado

Publicado por Isaias (4204 intervenciones) el 13/07/2017 19:06:34
Y agrego, reemplaza tu instruccion IN(consulta)

1
where CONREG in

Por EXISTS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar