-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocedure part1.sql
160 lines (121 loc) · 3.16 KB
/
procedure part1.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
use Negocios ;
--Ver catalogo de procedimiento almacenados en la bd
select * from sys.procedures;
--Eliminar de procedimiento almacenado
drop procedure Ventas.usp001
drop procedure Ventas.usp002
drop procedure Ventas.usp003
drop procedure Ventas.uspInvoqueal003
go
--Procedimiento almacenado de usuario
--Fase 01
create or Alter Procedure usp001
as
begin
select * from Ventas.clientes
end;
--Fase 02: Ejecucion del procedimiento almacenado
execute usp001;
--
exec usp001;
--
usp001;
-------------------------------
--Eliminar procedimiento
drop procedure usp001;
--Crear procedimiento en un esquema
--Fase 01:
create or alter procedure ventas.usp001
as
begin
select * from Ventas.clientes
end
go
--Fase 2:
exec Ventas.usp001; -- a diferencia de arriba se guardo dento de la schema ventas
--Uso de parametro
--Fase 01
create or alter procedure ventas.usp001
@p_id_pais char(6)
as
begin
select * from Ventas.clientes
where idpais=@p_id_pais
end
go
--Fase
exec ventas.usp001 '001'; -- Imprime los datos de ventas.cliente su idpais = 001
exec ventas.usp001 '002'; -- Imprime los datos de ventas.cliente su idpais = 002
--Uso de parametro con valor predeterminado
--Fase1
create or alter procedure ventas.usp001
@p_id_pais char(6) = '002'
as
begin
select * from Ventas.clientes
where idpais=@p_id_pais
end
go
--Fase 02 efecutar el sp sin definir valor para el parametro
exec Ventas.usp001 --opta con el recurso de id predeterminado es 002
go
--Fase 03 ejecutar el sp definiendo valor al parametro
exec ventas.usp001 '005' --por medio del parametro fue que se puede cambiar el valor predeterminado
-----------------------------------
--Usando parametros de tipo fecha
--Fase 01
create or alter procedure ventas.ups002
@p_fecha1 date, @p_fecha2 date
as
begin
select * from Ventas.pedidoscabe
where FechaPedido between @p_fecha1 and @p_fecha2
end
go
--Fase 2:
set dateformat dmy; --con eso se pode el dia mes y año se configura
----Ejecucion correcta
execute ventas.ups002 '21/02/98','05/03/98'
go
--Ejecucion fallida
execute ventas.ups002 '05/03/98','21/02/98'
go
--Modifiacar el sp anterior para evadir el orden de las fechas, caso contrario genere un error leve
--Fases
create or alter procedure ventas.ups002
@p_fecha1 date, @p_fecha2 date
as
begin
if @p_fecha1<@p_fecha2
select * from Ventas.pedidoscabe
where FechaPedido between @p_fecha1 and @p_fecha2
else
raiserror('Error en las orden de las fechas.....',10,1)
end
go
----------------------------------------------------------
--Modificar el sp anterior para modificar el nivel de la severidad del error grave controlándolo
--con try / catch
create or alter procedure ventas.ups002
@p_fecha1 date, @p_fecha2 date
as
begin
begin try
if @p_fecha1<@p_fecha2
select * from Ventas.pedidoscabe
where FechaPedido between @p_fecha1 and @p_fecha2
else
raiserror('Error en las orden de las fechas.....',16,1)
end try
begin catch
print error_message()
print 'Numero de error '+ str(error_number())
end catch
end
go
----Ejecucion correcta
execute ventas.ups002 '21/02/98','05/03/98'
go
--Ejecucion fallida
execute ventas.ups002 '05/03/98','21/02/98'
go