-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProcedimientos almacenados.sql
197 lines (174 loc) · 5.75 KB
/
Procedimientos almacenados.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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
create PROCEDURE SP_GET_ALL_USERS(
USUARIOS OUT SYS_REFCURSOR
) AS
BEGIN
OPEN USUARIOS FOR SELECT RUT,
NOMBRE,
APELLIDO_MATERNO,
APELLIDO_PATERNO,
EMAIL,
TELEFONO,
ROL_ID,
NOMBRE_ROL,
FECHA_CREACION
FROM USUARIO U
JOIN ROL R ON U.ROL_ID = R.ID
ORDER BY U.FECHA_CREACION ASC;
END;
/
create FUNCTION get_rol(rt IN VARCHAR2, pass IN VARCHAR2)
RETURN NUMBER
IS rol NUMBER;
BEGIN
SELECT ROL_ID
INTO rol
FROM USUARIO
WHERE RUT = rt
AND CLAVE = pass;
RETURN(rol);
END;
/
create PROCEDURE SP_DELETE_USUARIO (
IN_RUT IN USUARIO.RUT%TYPE,
OUT_GLOSA OUT VARCHAR2,
OUT_ESTADO OUT NUMBER,
OUT_MENSAJE_SALIDA OUT VARCHAR2
) AS
BEGIN
DELETE FROM USUARIO WHERE RUT = IN_RUT
RETURNING 'USUARIO ' || IN_RUT || ' ELIMINADO' INTO OUT_MENSAJE_SALIDA;
EXCEPTION
WHEN OTHERS THEN
OUT_ESTADO := -1;
OUT_GLOSA := DEV.FN_GET_GLOSA_ERROR;
END;
/
create PROCEDURE SP_GET_PRODUCTOS_PRODUCTOR(
IN_ID_PRODUCTOR IN USUARIO.RUT%TYPE,
PRODUCTOS OUT SYS_REFCURSOR
) AS
BEGIN
OPEN PRODUCTOS FOR
SELECT NOMBRE_PRODUCTO,
PRECIO,
CALIDAD,
CANTIDAD
FROM PRODUCTO_PRODUCTOR PP JOIN USUARIO U ON PP.PRODUCTOR_RUT = U.RUT JOIN PRODUCTO P ON PP.PRODUCTO_ID = P.ID
WHERE PP.PRODUCTOR_RUT = IN_ID_PRODUCTOR;
END;
/
create PROCEDURE SP_GET_USER (
IN_RUT IN USUARIO.RUT%TYPE,
USUARIO OUT SYS_REFCURSOR
) AS
BEGIN
OPEN USUARIO FOR SELECT
RUT,
NOMBRE,
APELLIDO_MATERNO,
APELLIDO_PATERNO,
EMAIL,
TELEFONO,
ROL_ID,
NOMBRE_ROL,
FECHA_CREACION
FROM
USUARIO U
JOIN ROL R ON U.ROL_ID = R.ID
WHERE U.RUT = IN_RUT;
END;
/
create PROCEDURE SP_INSERT_PRODUCTO_PRODUCTOR (
IN_ID IN PRODUCTO_PRODUCTOR.ID%TYPE,
IN_ID_PRODUCTO IN PRODUCTO_PRODUCTOR.PRODUCTO_ID%TYPE,
IN_PRECIO IN PRODUCTO_PRODUCTOR.PRECIO%TYPE,
IN_CALIDAD IN PRODUCTO_PRODUCTOR.CALIDAD%TYPE,
IN_CANTIDAD IN PRODUCTO_PRODUCTOR.CANTIDAD%TYPE,
PRODUCTOR_RUT IN PRODUCTO_PRODUCTOR.PRODUCTOR_RUT%TYPE,
OUT_GLOSA OUT VARCHAR2,
OUT_ESTADO OUT NUMBER,
OUT_MENSAJE_SALIDA OUT VARCHAR2
) AS
BEGIN
INSERT INTO PRODUCTO_PRODUCTOR (ID, producto_id, precio, calidad, cantidad, PRODUCTOR_RUT)
VALUES (IN_ID, IN_ID_PRODUCTO, IN_PRECIO, IN_CALIDAD, IN_CANTIDAD, PRODUCTOR_RUT )
RETURNING 'PRODUCTO CREADO CORRECTAMENTE' INTO OUT_MENSAJE_SALIDA;
EXCEPTION
WHEN OTHERS THEN
OUT_ESTADO := -1;
OUT_GLOSA := DEV.FN_GET_GLOSA_ERROR;
END;
/
create PROCEDURE SP_INSERT_USUARIO (
IN_RUT IN USUARIO.RUT%TYPE,
IN_NOMBRE IN USUARIO.NOMBRE%TYPE,
IN_APELLIDO_PATERNO IN USUARIO.APELLIDO_PATERNO%TYPE,
IN_APELLIDO_MATERNO IN USUARIO.APELLIDO_MATERNO%TYPE,
IN_TELEFONO IN USUARIO.TELEFONO%TYPE,
IN_EMAIL IN USUARIO.EMAIL%TYPE,
IN_CLAVE IN USUARIO.CLAVE%TYPE,
IN_ROL IN USUARIO.ROL_ID%TYPE,
OUT_GLOSA OUT VARCHAR2,
OUT_ESTADO OUT NUMBER,
OUT_MENSAJE_SALIDA OUT VARCHAR2
) AS
BEGIN
INSERT INTO DEV.USUARIO (RUT, NOMBRE, APELLIDO_PATERNO, APELLIDO_MATERNO, TELEFONO, EMAIL, CLAVE, ROL_ID, FECHA_CREACION)
VALUES (IN_RUT, IN_NOMBRE, IN_APELLIDO_PATERNO, IN_APELLIDO_MATERNO, IN_TELEFONO, IN_EMAIL, IN_CLAVE, IN_ROL, SYSDATE)
RETURNING 'CREADO CORRECTAMENTE' INTO OUT_MENSAJE_SALIDA;
EXCEPTION
WHEN OTHERS THEN
OUT_ESTADO := -1;
OUT_GLOSA := DEV.FN_GET_GLOSA_ERROR;
END;
/
create PROCEDURE SP_LOGIN
(P_RUT IN varchar2,
P_PASS IN varchar2,
Usuario OUT SYS_REFCURSOR)
IS
BEGIN
OPEN Usuario FOR
SELECT rut, nombre, apellido_materno, apellido_paterno, email, telefono, rol_id, nombre_rol
FROM USUARIO u JOIN ROL R on u.ROL_ID = R.ID
WHERE rut = P_RUT AND CLAVE = P_PASS;
END;
/
create PROCEDURE SP_UPDATE_PASSWORD (
IN_RUT IN USUARIO.RUT%TYPE,
IN_NUEVA_CLAVE IN USUARIO.CLAVE%TYPE,
OUT_GLOSA OUT VARCHAR2,
OUT_ESTADO OUT NUMBER,
OUT_MENSAJE_SALIDA OUT VARCHAR2
) AS
BEGIN
UPDATE DEV.USUARIO SET
CLAVE = IN_NUEVA_CLAVE
WHERE USUARIO.RUT = IN_RUT
RETURNING 'CLAVE MODIFICADA CORRECTAMENTE' INTO OUT_MENSAJE_SALIDA;
EXCEPTION
WHEN OTHERS THEN
OUT_ESTADO := -1;
OUT_GLOSA := DEV.FN_GET_GLOSA_ERROR;
END;
/
create PROCEDURE SP_UPDATE_USUARIO (
IN_RUT IN USUARIO.RUT%TYPE,
IN_TELEFONO IN USUARIO.TELEFONO%TYPE,
IN_EMAIL IN USUARIO.EMAIL%TYPE,
OUT_GLOSA OUT VARCHAR2,
OUT_ESTADO OUT NUMBER,
OUT_MENSAJE_SALIDA OUT VARCHAR2
) AS
BEGIN
UPDATE DEV.USUARIO SET
TELEFONO = IN_TELEFONO,
EMAIL = IN_EMAIL
WHERE USUARIO.RUT = IN_RUT
RETURNING 'MODIFICADO CORRECTAMENTE' INTO OUT_MENSAJE_SALIDA;
EXCEPTION
WHEN OTHERS THEN
OUT_ESTADO := -1;
OUT_GLOSA := DEV.FN_GET_GLOSA_ERROR;
END;
/