Mis intentos de consultar MySQL desde PHP con una instrucción create de un procedimiento de almacenamiento (SP) han fallado. ¿No es esto posible?¿Cómo crear un procedimiento almacenado MySQL desde PHP?
Si es posible, por favor dé un ejemplo.
Mis intentos de consultar MySQL desde PHP con una instrucción create de un procedimiento de almacenamiento (SP) han fallado. ¿No es esto posible?¿Cómo crear un procedimiento almacenado MySQL desde PHP?
Si es posible, por favor dé un ejemplo.
El manual de MySQL tiene una descripción clara sobre how to create stored procedures (13.1.15. CREATE PROCEDURE
and CREATE FUNCTION
Syntax).
La siguiente pregunta es: ¿la cuenta que utiliza para acceder a la base de datos MySQL tiene los derechos para crear un procedimiento?
Los detalles sobre esta pregunta se puede encontrar aquí: 19.2.2. Stored Routines and MySQL Privileges
¿Tiene suficientes privilegios en la cuenta con la que se conecta desde PHP? De the manual
partir de MySQL 5.0.3, para ejecutar el CREATE PROCEDURE o CREATE FUNCTION declaración, es necesario tener el permiso CREATE RUTINA
Véase también Stored Routines and MySQL Privileges en el manual.
Mientras:
Entonces almacenado debería estar funcionando. Verifique esto y vuelva a contactarnos.
Además de los privilegios, lo que con toda probabilidad puede provocar que el problema es que en realidad mysql_query ($ consulta) sólo puede funcionar un comando por llamada!
Entonces, lo que tienes que hacer es dividir los comandos en sevaral mysql_query ($ query) -calls.
Lo que quiero decir es algo como esto:
$query = "DROP FUNCTION IF EXISTS fnElfProef (accountNr INT)";
mysql_query($query);
$query = "CREATE FUNCTION fnElfProef (accountNr INT)
RETURNS BOOLEAN
BEGIN
DECLARE i, totaal INT DEFAULT 0;
WHILE i < 9 DO
SET i = i+1;
SET totaal = totaal+(i*(accountNr%10));
SET accountNr = FLOOR(accountNr/10);
END WHILE;
RETURN (totaal%11) = 0;
END";
mysql_query($query);
$query = "SELECT * FROM mytable";
mysql_query($query);
No se puede utilizar la sentencia DELIMITER desde dentro de PHP. Por lo tanto,
1) remove the DELIMITER statements
2)and change all your delimiters to ;
es molesto porque ahora usted tiene que tener una versión con delimitadores para el desarrollo y las pruebas en línea de comandos MySQL o una herramienta MySQL como sqlyog o banco de trabajo de MySQL, y una versión sin los delimitadores en uso a través de su PHP programa.
Si alguien sabe una mejor manera, me gustaría oírlo - (pero no por llamar a un script de shell del sistema operativo -. Que tiene demasiados problemas residuales)
Y necesita permisos de super.
http://forums.mysql.com/read.php?98,161275,161275 –