PostgreSQL - Ayuda a convertir un codigo MySQL a PostgreSQL

 
Vista:

Ayuda a convertir un codigo MySQL a PostgreSQL

Publicado por Cristian Camilo Bahamon Castaño (1 intervención) el 11/12/2019 05:54:53
Hola soy novato en Postgresql y porfa necesito ayuda para convertir este codigo MySQL estoy trabajando con pgadmin4


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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
create database bdcarrito;
 
use bdcarrito;
 
 
CREATE TABLE producto(
 CodigoProducto int(11) NOT NULL,
 Nombre varchar (100) NOT NULL,
 Precio decimal (18.2) NOT NULL,
 Imagen varchar (20) NOT NULL,
 PRIMARY KEY (codigoProducto)
);
 
 
INSERT INTO producto VALUES (1, 'Falda-Negra', 34.50, 'falda-negra.jpg'),
       (2, 'Pantalon-Azul', 30.00, 'pantalon-azul.jpg'),
       (3, 'Pantalon-Flores', 45.87, 'pantalon-flores.jpg'),
       (4, 'Pantalon-Top', 43.90, 'pantalon-top.jpg'),
       (5, 'Polo-Mangas', 28.88, 'polo-mangas.jpg'),
       (6, 'Short-Polo', 56.80, 'short-polo.jpg'),
       (7, 'Short-Top', 76.70, 'short-top.jpg');
 
 
CREATE TABLE usuarios (
 CodUsuario int (11) NOT NULL AUTO_INCREMENT,
 ApeUsuario varchar (30) NOT NULL,
 NomUsuario varchar (30) NOT NULL,
 CiudUsuario varchar (100) NOT NULL,
 Perfil varchar (15) NOT NULL,
 Correo varchar (30) NOT NULL,
 ClaveUsuario varchar (30) NOT NULL,
 PRIMARY KEY (CodUsuario)
);
 
 
 
INSERT INTO usuarios VALUES (1, 'Ortiz Collazos', 'Miguel', 'Cali', 'Admin', 'grau@gmail.com', '111'),
      (2, 'Lopez Ruiz', 'Jenifer', 'Pereira', 'Cliente', 'jenifer@gmail.com', '123'),
      (3, 'Aguilera Moreno', 'Sergio', 'Medellin', 'Cliente', 'sergio@gmail.com', '147');
 
 
CREATE TABLE venta (
 CodigoVenta int (11) NOT NULL,
 Cliente varchar (100) NOT NULL,
 Fecha datetime NOT NULL,
 PRIMARY KEY (CodigoVenta)
);
 
 
INSERT INTO venta VALUES (1, 'Jenifer Lopez Ruiz\r\n', '2017-11-22 00:00:00'),
               (2, 'Sergio Aguilera Moreno\r\n', '2017-11-23 15:30:00'),
     (3, 'Miguel Ortiz Collazos\r\n', '2017-11-21 19:45:00');
 
 
CREATE TABLE detalleventa (
 CodigoVenta int (11) NOT NULL,
 CodigoProducto int (11) NOT NULL,
 Cantidad decimal (18,2) NOT NULL,
 Descuento decimal (18,2) NOT NULL,
 PRIMARY KEY (CodigoVenta, CodigoProducto),
 KEY FK_DetalleVenta_Producto(CodigoProducto),
 CONSTRAINT FK_DetalleVenta_Producto FOREIGN KEY (CodigoProducto) REFERENCES producto (CodigoProducto),
 CONSTRAINT FK_DetalleVenta_Venta FOREIGN KEY (CodigoVenta) REFERENCES venta (CodigoVenta)
);
 
 
INSERT INTO detalleventa VALUES
      (1,2,3.00,3.75),
      (1,5,2.00,2.88),
      (2,4,4.00,3.78);
 
 
CREATE PROCEDURE spF_detalleVenta_one1(
_cod int)
BEGIN
SELECT d.codigoventa,d.codigoproducto,p.nombre,d.cantidad,d.descuento FROM detalleventa d
inner join producto p on p.codigoproducto=d.codigoproducto
WHERE CodigoVenta=_cod;
END;
 
 
CREATE PROCEDURE spF_detalleVenta_one2(
_cod int)
BEGIN
SELECT d.codigoventa,d.codigoproducto,p.nombre,d.cantidad,d.descuento FROM detalleventa d
inner join producto p on p.codigoproducto=d.codigoproducto
WHERE CodigoVenta=_cod;
END;
 
 
DROP PROCEDURE IF EXISTS spF_producto_All;
CREATE PROCEDURE spF_producto_All(
)
BEGIN
 
SELECT
 p.codigoProducto, p.nombre, p.precio, p,imagen
FROM producto p ORDER BY P.nombre;
END;
 
 
DROP PROCEDURE IF EXISTS spF_producto_one;
CREATE PROCEDURE spF_producto_one(
_CodigoProducto int)
BEGIN
 
SELECT
 p.codigoProducto, p,nombre, p,precio, p.imagen
FROM producto p WHERE p.codigoProducto = _codigoProdcuto
ORDER BY P.nombre;
END;
 
 
CREATE PROCEDURE spF_venta_All()
BEGIN
 
SELECT
 v.codigoVenta AS CodigoVenta,
 v.cliente AS Cliente,
 v.fecha AS Fecha,
 d.codigoProducto AS CodigoProducto,
 p.nombre AS Nombre,
 p.precio AS Precio,
 d.cantidad AS Cantidad,
 d.descuento AS Descuento,
 p.precio*d.cantidad AS Parcial,
 ((p.precio*d.cantidad)-d.descuento) AS Subtotal,
 (
 SELECT
     SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar
 FROM
     DetalleVenta AS dT INNER JOIN
     Producto AS pT on dT.codigoProducto = pT.codigoProducto
 WHERE
     dT.codigoVenta=v.codigoVenta
            ) AS TotalPagar
FROM
 Venta AS v INNER JOIN
 DetalleVenta AS d ON v.codigoVenta = d.codigoVenta INNER JOIN
 Producto AS p ON d.codigoProducto = p.codigoProducto
ORDER BY
   CodigoVenta, Nombre
;
END;
 
 
CREATE PROCEDURE spF_venta_one(
_codigoVenta int)
BEGIN
SELECT
 v.codigoVenta AS CodigoVenta,
 v.cliente AS Cliente,
 v.fecha AS Fecha,
 d.codigoProducto AS CodigoProducto,
 p.nombre AS Nombre,
 p.precio AS Precio,
 d.cantidad AS Cantidad,
 d.descuento AS Descuento,
 p.precio*d.cantidad AS Parcial,
 ((p.precio*d.cantidad)-d.descuento) AS Subtotal,
 (
 SELECT
     SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar
 FROM
     DetalleVenta AS dT INNER JOIN
     Producto AS pT on dT.codigoProducto = pT.codigoProducto
 WHERE
     dT.codigoVenta=v.codigoVenta
            ) AS TotalPagar
FROM
 Venta AS v INNER JOIN
 DetalleVenta AS d ON v.codigoVenta = d.codigoVenta INNER JOIN
 Producto AS p ON d.codigoProducto = p.codigoProducto
WHERE
 v.codigoVenta=_codigoVenta
ORDER BY
 Nombre
;
END;
 
 
CREATE PROCEDURE spF_ventas_All()
SELECT * FROM venta;
 
 
DROP PROCEDURE IF EXISTS spI_detalleventa;
CREATE PROCEDURE spI_detalleventa(
 _codigoVenta int,
 _codigoProducto int,
 _cantidad decimal(18, 2),
 _descuento decimal(18, 2)
)
BEGIN
INSERT INTO detalleventa(CodigoVenta, CodigoProducto, Cantidad, Descuento)
VALUES (_codigoVenta, _codigoProducto, _cantidad, _descuento);
END;
 
CREATE PROCEDURE spI_producto(
 INOUT _codigoProducto int,
 _nombre varchar (100),
 _precio decimal (18, 2),
 _imagen varchar (100)
)
BEGIN
SELECT IFNULL (MAX(CodigoProducto),0)+1 INTO _codigoProducto FROM producto;
INSERT INTO producto(
CodigoProducto, Nombre, Precio, Imagen)
VALUES (_codigoProducto, _nombre, _precio, _imagen);
END;
 
CREATE PROCEDURE spI_venta(
 INOUT _codigoVenta int,
 _cliente varchar (100)
)
BEGIN
SELECT IFNULL (MAX(CodigoVenta),0)+1 INTO _codigoVenta FROM venta;
INSERT INTO venta(
CodigoVenta, Cliente, Fecha)
VALUES (_codigoVenta, _cliente, _precio, CURDATE());
END;
 
 
CREATE PROCEDURE spU_producto(
 _codigoProducto int,
 _nombre varchar (100),
 _precio decimal (18, 2)
)
BEGIN
UPDATE producto
SET
 Nombre = _nombre, Precio = _precio
WHERE CodigoProdcuto = _codigoProducto;
END;
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
Imágen de perfil de Francisco
Val: 256
Oro
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Ayuda a convertir un codigo MySQL a PostgreSQL

Publicado por Francisco (110 intervenciones) el 12/12/2019 02:56:19
Hola

Bastaba un poco mas de investigación porque el cambio era muy poco

Saludos

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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
DROP TABLE IF EXISTS producto;
CREATE TABLE producto(
 CodigoProducto int NOT NULL,
 Nombre varchar(100) NOT NULL,
 Precio decimal(18,2) NOT NULL,
 Imagen varchar(20) NOT NULL,
 PRIMARY KEY (codigoProducto)
);
 
 
INSERT INTO producto VALUES (1, 'Falda-Negra', 34.50, 'falda-negra.jpg'),
       (2, 'Pantalon-Azul', 30.00, 'pantalon-azul.jpg'),
       (3, 'Pantalon-Flores', 45.87, 'pantalon-flores.jpg'),
       (4, 'Pantalon-Top', 43.90, 'pantalon-top.jpg'),
       (5, 'Polo-Mangas', 28.88, 'polo-mangas.jpg'),
       (6, 'Short-Polo', 56.80, 'short-polo.jpg'),
       (7, 'Short-Top', 76.70, 'short-top.jpg');
 
 
CREATE TABLE usuarios (
 CodUsuario serial NOT NULL,
 ApeUsuario varchar(30) NOT NULL,
 NomUsuario varchar(30) NOT NULL,
 CiudUsuario varchar(100) NOT NULL,
 Perfil varchar(15) NOT NULL,
 Correo varchar(30) NOT NULL,
 ClaveUsuario varchar(30) NOT NULL,
 PRIMARY KEY (CodUsuario)
);
 
 
 
INSERT INTO usuarios VALUES (1,'Ortiz Collazos', 'Miguel', 'Cali', 'Admin', 'grau@gmail.com', '111'),
      (2,'Lopez Ruiz', 'Jenifer', 'Pereira', 'Cliente', 'jenifer@gmail.com', '123'),
      (3,'Aguilera Moreno', 'Sergio', 'Medellin', 'Cliente', 'sergio@gmail.com', '147');
 
 
CREATE TABLE venta (
 CodigoVenta int NOT NULL,
 Cliente varchar(100) NOT NULL,
 Fecha timestamp NOT NULL,
 PRIMARY KEY (CodigoVenta)
);
 
 
INSERT INTO venta VALUES (1, 'Jenifer Lopez Ruiz\r\n', '2017-11-22 00:00:00'),
               (2, 'Sergio Aguilera Moreno\r\n', '2017-11-23 15:30:00'),
     (3, 'Miguel Ortiz Collazos\r\n', '2017-11-21 19:45:00');
 
 
DROP TABLE IF EXISTS detalleventa;
CREATE TABLE detalleventa (
 CodigoVenta int NOT NULL,
 CodigoProducto int NOT NULL,
 Cantidad decimal(18,2) NOT NULL,
 Descuento decimal(18,2) NOT NULL,
 PRIMARY KEY (CodigoVenta, CodigoProducto),
 --KEY FK_DetalleVenta_Producto(CodigoProducto),
 CONSTRAINT FK_DetalleVenta_Producto FOREIGN KEY (CodigoProducto) REFERENCES producto (CodigoProducto),
 CONSTRAINT FK_DetalleVenta_Venta FOREIGN KEY (CodigoVenta) REFERENCES venta (CodigoVenta)
);
 
 
INSERT INTO detalleventa VALUES
      (1,2,3.00,3.75),
      (1,5,2.00,2.88),
      (2,4,4.00,3.78);
 
DROP PROCEDURE IF EXISTS spF_detalleVenta_one1;
CREATE OR REPLACE FUNCTION spF_detalleVenta_one1(_cod int)
	RETURNS TABLE(
		codigoventa int,
		codigoproducto int,
		nombre varchar,
		cantidad decimal(18,2),
		descuento decimal(18,2)
	) AS
$BODY$
BEGIN
	RETURN QUERY
		SELECT
			d.codigoventa,
			d.codigoproducto,
			p.nombre,
			d.cantidad,
			d.descuento
		FROM detalleventa d
			INNER JOIN producto p ON p.codigoproducto=d.codigoproducto
		WHERE d.codigoventa=_cod;
END;
$BODY$
LANGUAGE plpgsql;
-- TEST
SELECT * FROM spF_detalleVenta_one1(1);
 
DROP PROCEDURE IF EXISTS spF_detalleVenta_one2;
CREATE OR REPLACE FUNCTION spF_detalleVenta_one2(_cod int)
	RETURNS TABLE(
		codigoventa int,
		codigoproducto int,
		nombre varchar,
		cantidad decimal(18,2),
		descuento decimal(18,2)
	) AS
$BODY$
BEGIN
	RETURN QUERY
		SELECT
			d.codigoventa,
			d.codigoproducto,
			p.nombre,
			d.cantidad,
			d.descuento
		FROM detalleventa d
			INNER JOIN producto p ON p.codigoproducto=d.codigoproducto
		WHERE d.codigoVenta=_cod;
END;
$BODY$
LANGUAGE plpgsql;
-- TEST
SELECT * FROM spF_detalleVenta_one2(1);
 
 
DROP PROCEDURE IF EXISTS spF_producto_All;
CREATE OR REPLACE FUNCTION spF_producto_All()
	RETURNS TABLE(
		codigoProducto int,
		nombre varchar,
		precio decimal(18,2),
		imagen varchar
	) AS
$BODY$
BEGIN
	RETURN QUERY
		SELECT
 			p.codigoProducto,
			p.nombre,
			p.precio,
			p.imagen
		FROM producto p
		ORDER BY P.nombre;
END;
$BODY$
LANGUAGE plpgsql;
-- TEST
SELECT * FROM spF_producto_All();
 
DROP PROCEDURE IF EXISTS spF_producto_one;
CREATE OR REPLACE FUNCTION spF_producto_one(_codigoProducto int)
	RETURNS TABLE(
		codigoProducto int,
		nombre varchar,
		precio decimal(18,2),
		imagen varchar
	) AS
$BODY$
BEGIN
	RETURN QUERY
		SELECT
 			p.codigoProducto,
			p.nombre,
			p.precio,
			p.imagen
		FROM producto p
		WHERE p.codigoProducto = _codigoProducto
		ORDER BY P.nombre;
END;
$BODY$
LANGUAGE plpgsql;
-- TEST
SELECT * FROM spF_producto_one(1);
 
DROP FUNCTION IF EXISTS spF_venta_All;
CREATE OR REPLACE FUNCTION spF_venta_All()
	RETURNS TABLE(
		CodigoVenta int,
		Cliente varchar,
		Fecha timestamp,
		CodigoProducto int,
		Nombre varchar,
		Precio decimal(18,2),
		Cantidad decimal(18,2),
		Descuento decimal(18,2),
		Parcial decimal(18,2),
		Subtotal decimal(18,2),
		TotalPagar decimal(18,2)
	) AS
$BODY$
BEGIN
	RETURN QUERY
		SELECT
			v.codigoVenta AS CodigoVenta,
			v.cliente AS Cliente,
			v.fecha AS Fecha,
			d.codigoProducto AS CodigoProducto,
			p.nombre AS Nombre,
			p.precio AS Precio,
			d.cantidad AS Cantidad,
			d.descuento AS Descuento,
			(p.precio*d.cantidad)::decimal(18,2) AS Parcial,
			((p.precio*d.cantidad)-d.descuento)::decimal(18,2) AS Subtotal,
			(
				SELECT
					SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar
				FROM DetalleVenta AS dT
					INNER JOIN Producto AS pT ON dT.codigoProducto = pT.codigoProducto
				WHERE dT.codigoVenta=v.codigoVenta
			)::decimal(18,2) AS TotalPagar
		FROM Venta AS v
			INNER JOIN DetalleVenta AS d ON v.codigoVenta = d.codigoVenta
			INNER JOIN Producto AS p ON d.codigoProducto = p.codigoProducto
		ORDER BY CodigoVenta, Nombre;
END;
$BODY$
LANGUAGE plpgsql;
--TEST
SELECT * FROM spF_venta_all();
 
DROP FUNCTION IF EXISTS spF_venta_one;
CREATE OR REPLACE FUNCTION spF_venta_one(_codigoVenta int)
	RETURNS TABLE(
		CodigoVenta int,
		Cliente varchar,
		Fecha timestamp,
		CodigoProducto int,
		Nombre varchar,
		Precio decimal(18,2),
		Cantidad decimal(18,2),
		Descuento decimal(18,2),
		Parcial decimal(18,2),
		Subtotal decimal(18,2),
		TotalPagar decimal(18,2)
	) AS
$BODY$
BEGIN
	RETURN QUERY
		SELECT
			v.codigoVenta AS CodigoVenta,
		 	v.cliente AS Cliente,
		 	v.fecha AS Fecha,
		 	d.codigoProducto AS CodigoProducto,
		 	p.nombre AS Nombre,
		 	p.precio AS Precio,
		 	d.cantidad AS Cantidad,
		 	d.descuento AS Descuento,
		 	p.precio*d.cantidad::decimal(18,2) AS Parcial,
		 	((p.precio*d.cantidad)-d.descuento)::decimal(18,2) AS Subtotal,
		 	(
		 		SELECT
			 		SUM((dT.cantidad * pT.precio)-dT.descuento) AS TotalPagar
		 		FROM DetalleVenta AS dT
					INNER JOIN Producto AS pT on dT.codigoProducto = pT.codigoProducto
		 		WHERE dT.codigoVenta=v.codigoVenta
			)::decimal(18,2) AS TotalPagar
		FROM venta AS v
			INNER JOIN DetalleVenta AS d ON v.codigoVenta = d.codigoVenta
			INNER JOIN Producto AS p ON d.codigoProducto = p.codigoProducto
		WHERE v.codigoVenta = _codigoVenta
		ORDER BY Nombre;
END;
$BODY$
LANGUAGE plpgsql;
-- TEST
SELECT * FROM spF_venta_one(1);
 
DROP FUNCTION IF EXISTS spF_ventas_All;
CREATE OR REPLACE FUNCTION spF_ventas_All()
	RETURNS TABLE (
		codigoventas int,
		cliente varchar,
		fecha timestamp
		) AS
$BODY$
BEGIN
	RETURN QUERY
		SELECT * FROM venta;
END;
$BODY$
LANGUAGE plpgsql;
-- TEST
SELECT * FROM spF_ventas_All();
 
 
 
DROP PROCEDURE IF EXISTS spI_detalleventa;
CREATE OR REPLACE PROCEDURE spI_detalleventa(
 		_codigoVenta int,
 		_codigoProducto int,
 		_cantidad decimal(18, 2),
 		_descuento decimal(18, 2)
	) AS
$BODY$
BEGIN
	INSERT INTO detalleventa(CodigoVenta, CodigoProducto, Cantidad, Descuento)
		VALUES (_codigoVenta, _codigoProducto, _cantidad, _descuento);
	COMMIT;
END;
$BODY$
LANGUAGE plpgsql;
 
DROP PROCEDURE IF EXISTS spI_detalleventa;
CREATE OR REPLACE PROCEDURE spI_producto(
 		INOUT _codigoProducto int,
 		_nombre varchar (100),
 		_precio decimal (18, 2),
 		_imagen varchar (100)
	) AS
$BODY$
BEGIN
	SELECT IFNULL (MAX(CodigoProducto),0)+1 INTO _codigoProducto FROM producto;
	INSERT INTO producto(CodigoProducto, Nombre, Precio, Imagen)
	VALUES (_codigoProducto, _nombre, _precio, _imagen);
	COMMIT;
END;
$BODY$
LANGUAGE plpgsql;
 
DROP PROCEDURE IF EXISTS spI_venta;
CREATE PROCEDURE spI_venta(
		INOUT _codigoVenta int,
 		_cliente varchar (100)
	) AS
$BODY$
BEGIN
	SELECT IFNULL (MAX(CodigoVenta),0)+1 INTO _codigoVenta FROM venta;
	INSERT INTO venta(CodigoVenta, Cliente, Fecha)
	VALUES (_codigoVenta, _cliente, _precio, NOW());
END;
$BODY$
LANGUAGE plpgsql;
 
DROP PROCEDURE IF EXISTS spI_producto;
CREATE PROCEDURE spU_producto(
 		_codigoProducto int,
 		_nombre varchar (100),
 		_precio decimal (18, 2)
	) AS
$BODY$
BEGIN
	UPDATE producto
		SET Nombre = _nombre, Precio = _precio
	WHERE CodigoProdcuto = _codigoProducto;
END;
$BODY$
LANGUAGE plpgsql;
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