-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocedure part III.sql
136 lines (101 loc) · 3.01 KB
/
procedure part III.sql
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
use Negocios;
create or alter procedure uspcursorLimaCentro
@p_idcli char(6)
as
begin
if exists(select IdCliente from Ventas.pedidoscabe where IdCliente=@p_idcli)
begin
declare cursorclientevtas cursor for select IdPedido,FechaPedido from ventas.pedidoscabe
where IdCliente=@p_idcli
declare @v_idped int, @v_fecped date
open cursorclientevtas
fetch cursorclientevtas into @v_idped,@v_fecped
------------------------------------------
print space(5)+'Pedido'+space(10)+'Fecha'
print replicate('=',50)
----------------------------------
while @@FETCH_STATUS=0
begin
print space(5)+cast(@v_idped as varchar(6))+space(10)+convert(varchar(14),@v_fecped,4)
fetch cursorclientevtas into @v_idped,@v_fecped
end
raiserror('codigo no existe',10,1)
end
close cursorclientevtas
deallocate cursorclientevtas
end
go
drop procedure uspcursorLimaCentro
----------------------------
select * from ventas.pedidoscabe
execute uspcursorLimaCentro '';
---------------------------------------------------
--Del profe
Create or alter procedure uspcursorLimaCentro
@p_idcli char(6)
As
Begin
if exists(select * from Ventas.pedidoscabe where IdCliente=@p_idcli)
begin
declare cursorclientevtas cursor for select IdPedido, FechaPedido from ventas.pedidoscabe
where IdCliente=@p_idcli
declare @v_idped int,@v_fecped date
open cursorclientevtas
fetch cursorclientevtas into @v_idped, @v_fecped
-----------------------------------------------------------------
print space(5)+'Pedido'+space(10)+'Fecha'
print replicate('=',50)
-----------------------------------------------------------------
While @@fetch_status =0
begin
print space(5)+cast(@v_idped as varchar(6))+space(10)+convert(varchar(14),@v_fecped,6)
fetch cursorclientevtas into @v_idped, @v_fecped
end
close cursorclientevtas
deallocate cursorclientevtas
end
else
raiserror('El id_cliente solicitado no registra ningun pedido',10,1)
End;
go
---------------------------------
--procedimiento con transacciones
--primero crear sp que registre nuevo cliente
create or alter procedure uspregistracliente
@p_IdCliente char(5),
@p_NomCliente varchar(40),
@p_DirCliente varchar(60),
@p_idpais char(3),
@p_fonoCliente varchar(25)
as
begin
insert into ventas.clientes
values
(@p_IdCliente,@p_NomCliente,@p_DirCliente,@p_idpais,@p_fonoCliente)
end
go
--ahora realiza el sp con transacciones y con exepcion de errores
create or alter procedure usptracliente
@p_IdCliente char(5),
@p_NomCliente varchar(40),
@p_DirCliente varchar(60),
@p_idpais char(3),
@p_fonoCliente varchar(25)
as
begin
begin try
begin Tran t1
execute uspregistracliente @p_IdCliente,@p_NomCliente,@p_DirCliente,@p_idpais,@p_fonoCliente
if @p_idpais <> '002'
commit tran t1
else
raiserror('id de pais no permitido',16,1)
end try
begin catch
rollback tran t1
print error_message()
end catch
end
go
execute usptracliente 'JANAT','JAVICHIN BURGER','PSJ ROSA MELANINO','002','55555'
SELECT * FROM Ventas.clientes