MySQL - ALTER FUNCTION / PROCEDURE

 
Vista:
sin imagen de perfil

ALTER FUNCTION / PROCEDURE

Publicado por DALSOM (23 intervenciones) el 07/07/2010 23:32:15
Hola a todos,

He estado investigando, probando y pasando sinsabores. Esta vez estoy traabjando con las fucnoiiones y estoy tratando de crearlas y modificarlas.

He creado algunas funciones como :

create function FechaActual() returns datetime
begin
declare ld datetime;
set ld = curdate();
return ld;
end

Y a esta funcion la quiero mejorar y tambien intentar hacer que devuelva otra cosa que no sea una fecha, una cadena, para lo que le cambio el returns a String o Varchar*().

El problema esta en que quiero hacer lo con el alter function, pero eso me da error al intentar :

alter function FechaActual () returns varchar(50)
begin
declare ld char(20)
set ld = 'Hoy es Domingo';
return ld;
end

Segun he estado buscando, creo que solo sirve para renombrar la funcion, no para cambiar su contenido. Si no estoy en lo correcto, por favor, que alguien me diga como se hace? Ya que no me gusta el conjunto Drop functuin y luego hacer un create function .

Gracias.
Saludos,
Dalsom.
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

RE:ALTER FUNCTION / PROCEDURE

Publicado por Gonzalo GC (339 intervenciones) el 08/07/2010 14:10:27
Infortunadamente, ALTER [FUNCTION|PROCEDURE] no se usa para cambiar el cuerpo de los procedimientos, sino para cambiar otras características.
Fíjate en: http://dev.mysql.com/doc/refman/5.0/es/alter-procedure.html

SI lo que quieres es cambiar el prototipo o bien el cuerpo del código, lo que corresponde es eliminar y volver a crear, que es precisamente lo que hace, por ejemplo, el MySQL Query Browser cuando quieres editar un procedure o function. En ese caso lo que te pone son las sentencias de eliminación y creación en el encabezado del script editabe.

DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`nuevo` $$
CREATE PROCEDURE `test`.`nuevo` ()
BEGIN

END $$

DELIMITER ;
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