Crear un procedimiento almacenado en MySQL5 con<CFQUERY> de ColdFusion 9
stored-procedures (1)
tal vez estás haciendo esto más complicado como debería ser. La siguiente discusión me dice que no necesita la palabra clave DELIMIER
: http://forums.mysql.com/read.php?39,130834,248556#msg-248556
<CFQUERY datasource="mysql_jdbc">
DROP FUNCTION IF EXISTS `replace_ci`;
CREATE FUNCTION `replace_ci` ( str TEXT,needle CHAR(255),str_rep CHAR(255))
RETURNS TEXT
DETERMINISTIC
BEGIN
DECLARE return_str TEXT;
SELECT replace(lower(str),lower(needle),str_rep) INTO return_str;
RETURN return_str;
END
</CFQUERY>
No olvides agregar allowMultiQueries=true
a tu URL JDBC: http://www.bennadel.com/blog/1542-MySQL-3-4-com-mysql-jdbc-Driver-And-allowMultiQueries-true.htm
Me pregunto si es posible crear un procedimiento almacenado en MySQL5 a través de la <cfquery>
ColdFusion. Nunca he hecho nada con procedimientos almacenados antes ...
Intentaba establecer una función que reemplaza a la de REPLACE
de MySQL pero no a mayúsculas y minúsculas. Quería usar la función provista aquí .
Pero primero quiero crear esta función a través de Coldfusion como:
<CFQUERY datasource="#dsn#">
DELIMITER $$
DROP FUNCTION IF EXISTS `replace_ci`$$
CREATE FUNCTION `replace_ci` ( str TEXT,needle CHAR(255),str_rep CHAR(255))
RETURNS TEXT
DETERMINISTIC
BEGIN
DECLARE return_str TEXT;
SELECT replace(lower(str),lower(needle),str_rep) INTO return_str;
RETURN return_str;
END$$
DELIMITER ;
</CFQUERY>
Esto arroja el siguiente error:
Usted tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta a usar cerca de ''DELIMITER $$ DROP FUNCTION
replace_ci
EXISTSreplace_ci
$$ CREATE FUNCTION'' en la línea 1
Aunque ejecutar la declaración directamente en, por ejemplo, phpMyAdmin tuvo éxito.
Este artículo muestra solo cómo llamar a un <cfstoredproc>
almacenado con <cfstoredproc>
-tag pero no puedo ver dónde se declaran estos procedimientos al servidor de la base de datos.