MySQL - funcion mysql

   
Vista:

funcion mysql

Publicado por Angel (8 intervenciones) el 19/11/2015 12:50:13
Buenas estoy creando una funcion en Mysql

Mi idea es al ejecutarla me devuela el titulo de las peliculas que ganaron 11 oscar.

El problema que me da error al crear la funcion. Alguien me puede ayudar.
Error de sintaxis en la linea 2.
Creo que esta en el valor INT. numerosdeoscars en INT(4) titulo es varchar(40) creo que tengo mal estructurada la función.
Gracias.


1
2
3
4
5
6
7
8
delimiter //
create function oscars (titulo numerosdeoscars) returns INT(4)
BEGIN
returns select titulo from peliculas where numerosdeoscars=11
END
//
delimiter;
CALL function(1);
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 emanuel

funcion mysql

Publicado por emanuel (2 intervenciones) el 19/11/2015 12:55:13
Buenos dias, asi es angel si queres devolver un numero debes devolver un numero, en este caso como titulo es un string loq ue debes devolver en la declaracion es un varchar2 y listo. Deberia solucionarte. Cualquier inconveniente estoy a tu disposicion. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

funcion mysql

Publicado por Angel (8 intervenciones) el 19/11/2015 15:24:01
Hola emanuel, no termino de verlo, puedes ponerme un ejemplo por favor en base a la función que estoy intentandor crear.

Quiero seleccionar las peliculas que tienen 11 oscars. select titulo from peliculas where numerosdeoscars=11

titulo es varchar (40)
peliculas en mi BD
numerosdeoscars es INT(4)

Gracias

Como quiero es el numero de oscars ejecuto esto pero me da error.

1
2
3
4
5
6
7
8
delimiter //
create function oscars (numerosdeoscars) returns INT(4)
BEGIN
returns select titulo from peliculas where numerosdeoscars=11
END
//
delimiter;
CALL function(1);
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

funcion mysql

Publicado por Juan R. (19 intervenciones) el 20/11/2015 01:35:19
Buenas Angel

Lo que te dice Emanuel es que en vez de la línea:

create function oscars (numerosdeoscars) returns INT(4)

debería ser así:

create function oscars (numerosdeoscars) returns VARCHAR(2)

Con eso debería funcionar, en principio.

Un saludo
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

funcion mysql

Publicado por Angel (8 intervenciones) el 20/11/2015 11:43:05
Hola a todos la verdad es que no pillo las funciones, los procesos los veo bien, Pero las funciones no.

Si ejecuto esta sentencia:

Select titulo, MAX(numerodeoscars) from peliculas;

Obtengo el titulo y el numero maximo de oscar ganados de esa pelicula.

Ahora bien. Si quiero crear una función que devuelva el numero maximo de oscars que ha ganado la pelicula mas premiada de mi BD.

Como sería ya que no tengo que introducir en la función un parametro de entrada.

1
2
3
4
5
6
7
8
9
10
delimiter //
 
create function oscars ...........¿?
BEGIN
returns Select titulo, MAX(numerodeoscars) from peliculas;
END
//
delimiter;
 
CALL function oscars//
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

funcion mysql

Publicado por Juan R. (19 intervenciones) el 20/11/2015 15:14:05
Buenas de nuevo

Se me ocurre así a bote pronto que podrías usar la siguiente instrucción (no la he probado, pero puede ser que funcione);

SELECT TITULO,MAX(numerodeoscars) FROM peliculas ORDER BY 2 DESC LIIMIT 1

En realidad ordenaríamos por la segunda columna y con el LIMIT 1 decimos que sólo se muestre el primer registro.

Un saludo
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

funcion mysql

Publicado por Angel (8 intervenciones) el 20/11/2015 19:51:20
Hola Juan gracias por el aporte. Con lo que me indicas arreglo la sentencia.


Pero lo que necesito es crear una funcion que llame a dicha sentencia pero no se como crearla.

Saludos
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