2011-11-10 43 views
5

Debo agregar procedimientos almacenados a la base de datos MySQL.Almacenar procedimientos en phpMyAdmin

El problema es que el alojamiento ofrece phpMyAdmin para administrar la base de datos.

He buscado en Internet y la idea es ejecutar la instrucción nativa de MySQL que crea los procedimientos, pero como el código de procedimientos a menudo puede tener ;, tenemos que cambiar el delimitador en MySQL.

phpMyAdmin no tiene esta opción. ¿Alguien ha intentado crear procedimientos almacenados configurando manualmente el ancla, o algo que funcionó?

Respuesta

8

Hay una manera, ver este enlace: http://blog.nth-design.com/2009/02/25/creating-sp-in-phpmyadmin/

Presupuesto de ese enlace
1.Open phpMyadmin.
2. Seleccione una base de datos para trabajar.
3. Abra la pestaña SQL.
4. Seleccione todas las instrucciones SQL entre las instrucciones DELIMITER en su script de procedimiento almacenado. ¡No incluya las instrucciones DELIMITER! Aquí es lo que mi script de ejemplo debe verse como:

DROP PROCEDURE IF EXISTS spFoo $$ 
CREATE PROCEDURE spFoo() 
BEGIN 
    SELECT 'Foo' FROM DUAL; 
END $$ 

5.In el delimitador de campo, justo debajo de área de texto del editor de SQL, introduzca $$ como su delimitador.

+0

Este es precisamente el problema. En el phpMyAdmin ofrecido por el hosting, no aparezca el área de texto justo debajo del editor de SQL. No puedo ingresar $$ como delimitador. – user1039875

+2

@ user1039875 En ese caso, todavía está trabajando con una versión phpMyAdmin de la edad de piedra, pregunte a Fred Flintstone^H^H^H su administrador de sistemas para actualizar sus programas. – Johan

0

Intente crear/editar procedimientos almacenados y otros objetos MySQL con editores de objetos visuales en dbForge Studio for MySQL. La edición express es gratis.


  1. pregunta Conectividad - ¿qué hacer si no hay una conexión directa con el servidor MySQL? Posibles formas: tunneling HTTP: se puede usar para conectarse al servidor MySQL, es un método de conexión al servidor a través del protocolo HTTP/HTTPS o mediante una conexión segura (protocolo de red SSH/SSL).
  2. El comando del cliente DELIMITER es compatible con la herramienta sugerida. Por lo tanto, este comando se puede utilizar en los scripts. Además, los procedimientos almacenados y otros objetos pueden crearse y modificarse en editores visuales.
+0

Dada su reputación, no quisiera rechazar su respuesta como spam. ¿Podría incluir cómo su publicación ayuda a resolver el problema del autor? – Sampson

+0

Por supuesto. Dos respuestas El primero es usar el editor visual (como dije). El segundo: abra un nuevo documento SQL y escriba la sentencia CREATE PROCEDURE con DELIMITER; los delimitadores son compatibles con este cliente. – Devart

+0

En realidad, es un problema conocido en las versiones anteriores de phpMyAdmin. Veo dos formas: no usar delimitadores, o usar otro cliente MySQL. – Devart

0

Se puede establecer un delimitador de forma manual utilizando delimiter $$, donde $$ es su delimitador elegido. Esto funciona en mi alojamiento compartido con phpMyAdmin. Debe recordar volver a establecerlo en ; cuando haya terminado.

4

¿Por qué todos intentan usar una herramienta visual como consola?!? Hay una manera más facil:

ir a su base de datos, y buscar "Más"

enter image description here

A continuación, esta pantalla mostrará.Si ha creado los procedimientos almacenados, se enumerarán

enter image description here

para agregar uno nuevo clic en "Añadir rutina"

enter image description here

0

crear procedimiento sp_helpme comienzan seleccionar * de mi_tabla; final //

Delimiters in MySQL.

Tienes que cambiar ';' a '//' en el cuadro delímetro en phpmyadmin. Después de ejecutar correctamente revertir el delímetro.

0

Tuve problemas para usar la función 'Rutinas' en PHPMyadmin porque me seguía dando falsos negativos, así que lo hice a través de la pestaña 'SQL'.

CREATE PROCEDURE GetUserPwd(email VARCHAR(320), pass VARCHAR(128)) 
BEGIN 
DECLARE userid INT(3) DEFAULT 0; 
DECLARE password_equal INT(3) DEFAULT 0; 
DECLARE output VARCHAR(30); 
SELECT id INTO userid FROM members WHERE user_email = email; 
IF userid != 0 THEN 
SELECT user_pass = pass INTO password_equal FROM members WHERE id = userid; 
IF password_equal = 0 THEN 
SET output = 'not exist'; 
ELSE 
SET output = 'exist'; 
END IF; 
END IF; 
SELECT output; 
END 

En el cuadro de texto 'Delimitador', escriba '$$'. salvar.

después de eso, vaya a la pestaña 'Rutinas' y haga clic en 'ejecutar' e ingrese sus entradas cuando se le solicite.