Sv Community El Salvador
Soporte y Tecnología => Programación => Base de Datos => Mensaje iniciado por: froilan en abril 05, 2010, 07:40:13 pm
-
bueno la cosa es que no puedo hacer esto en mysql:
5. Elabore un procedimiento almacenado que defina las comisiones otorgadas por una venta realizada. Recibiendo como parámetros de entrada el importe de la venta. Devolviendo las comisiones por la venta, las cuales se calcularan por medio del 15% sobre la venta
info:
tengo estas tablas
CREATE TABLE `comisiones` (
`id_vendedor` INT(11) NOT NULL,
`comisiones` DECIMAL(15,2) DEFAULT NULL,
PRIMARY KEY (`id_vendedor`),
CONSTRAINT `comisiones_ibfk_1` FOREIGN KEY (`id_vendedor`) REFERENCES `vendedores` (`id_vendedor`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
CREATE TABLE `productos` (
`id_producto` INT(11) NOT NULL,
`descripcion` VARCHAR(25) DEFAULT NULL,
`proveedor` VARCHAR(25) DEFAULT NULL,
`precio` DECIMAL(15,2) DEFAULT NULL,
PRIMARY KEY (`id_producto`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
CREATE TABLE `vendedores` (
`id_vendedor` INT(11) NOT NULL,
`nombres` VARCHAR(25) DEFAULT NULL,
`apellidos` VARCHAR(25) DEFAULT NULL,
`fechaNac` DATE DEFAULT NULL,
`departamento` VARCHAR(25) DEFAULT NULL,
PRIMARY KEY (`id_vendedor`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
CREATE TABLE `ventas` (
`id_vendedor` INT(11) NOT NULL DEFAULT '0',
`id_producto` INT(11) NOT NULL DEFAULT '0',
`importe` DECIMAL(15,2) DEFAULT NULL,
`cantidad` INT(11) DEFAULT NULL,
PRIMARY KEY (`id_vendedor`,`id_producto`),
KEY `id_producto` (`id_producto`),
CONSTRAINT `ventas_ibfk_1` FOREIGN KEY (`id_vendedor`) REFERENCES `vendedores` (`id_vendedor`),
CONSTRAINT `ventas_ibfk_2` FOREIGN KEY (`id_producto`) REFERENCES `productos` (`id_producto`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
muchas gracias por tomarse el tiempo de leer y muchas gracias
-
hola! como estas, fijate que aqui no hacemos tareas gratis :) te puedo sugerir que busques en google ya que es una funcionalidad relativamente comun.
me tome la libertad de buscarte la info en google y encontre un manual de referencia del fabricante de mysql :)
http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html (http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html)
date gusto con la lectura :)
-
hola! como estas, fijate que aqui no hacemos tareas gratis :) te puedo sugerir que busques en google ya que es una funcionalidad relativamente comun.
no viejo disculpame no e peido que me lo hagan simplemente que me den un ejemplo pero muchas gracias voy a leer...
-
matizando un poco las palabras de g00mba; cual es el "error" que tenés?...
en tu primer post, no esta claro lo que querías; yo igual que g00mba supuse que querías que hicieramos tu tarea.....
ejemplos de procedures hay muchos en google, regresa cuando tengas un problema específico :thumbsup:
-
este seria bueno q pusieras el codigo para revisarlo y medio orientarte. porq claro no hacemos tareas lol
-
Ejemplo sencillo con parametro:
---------------------------
DELIMITER $$
USE `bd`$$
DROP PROCEDURE IF EXISTS `cuadrado`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `cuadrado`(IN numero INTEGER)
SELECT numero*numero$$
DELIMITER ;
ejemplo consulta
-------------------
USE `bd`$$
DROP PROCEDURE IF EXISTS `select_all`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `select_all`()
SELECT * FROM tabla$$
DELIMITER ;
llamandolo desde MYSQL
----------
CALL cuadrado(5)
por si lo llamas desde un lenguaje por ejemplo java
java.sql.CallableStatement cs=obj.conn.prepareCall("{call nombre procedimineto()}");
al menos en el administrador grafico de Mysql que tengo basta con solo colocar CREATE PROCEDURE nombre() SELECT * from tabla y ejecutarlo para que me cree lo que te pongo arriba.
Espero te sirva en algo.
-
fijnse que me dieron como ejemplo esto
DELIMITER //
CREATE PROCEDURE calcular_importe (IN idproducto INT, IN cant INT, OUT importe_calculado DECIMAL(15,2))
BEGIN
SELECT (productos.precio*cant) INTO importe_calculado
FROM productos
WHERE idproducto=productos.id_producto;
END;//
luego dijo lo siguiente:
Si es así debe elaborar un procedimiento almacenado que reciba como parametros de entrada el valor de la venta y este debe retornar las comisiones asignadas que son el 15% sobre la venta realizada. En este caso no debería de utilizar ninguna tabla en el cuerpo del procedimiento almacenado, la siguiente linea realizaria lo deseado:
SET <parametro que devolvera el procedimiento almacenado> = <parametro que recibio el valor de la venta> * 0.15;
pero la cosa es que al ejemplo lo entiendo pero no habia visto el "SET" y no se donde uvicarlo
-
creo que tu problema no es de sintaxis, creo que es conceptual. la idea es bien sencilla, un procedimiento alamacenado es una simple cadena de comandos sql envuelta en una orden para que sea guardado y llamado a posteridad. NO te vamos a poner la sintaxis solo de copy paste, intenta hacer algo por tu cuenta y te hacemos observaciones, por mas que pongas el problema y el ejemplo, hace algo primero.