Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

SP - porque utilizar delimiter?

Estas en el tema de SP - porque utilizar delimiter? en el foro de Mysql en Foros del Web. Hola No se si esta sea una pregunta tonta pero tengo una duda de como utilizar el delimiter... he estado creando Stored Procedures desde el ...
  #1 (permalink)  
Antiguo 07/05/2010, 09:17
 
Fecha de Ingreso: abril-2010
Mensajes: 36
Antigüedad: 14 años
Puntos: 2
SP - porque utilizar delimiter?

Hola

No se si esta sea una pregunta tonta pero tengo una duda de como utilizar el delimiter... he estado creando Stored Procedures desde el MySQL Administrator y en ningun momento he utilizado el delimiter ya que si lo introduzco al inicio del SP (antes de create procedure) me aparece un error.
Ahora no se si estare haciendo bien, es necesario que todos los SP tengan el delimiter y el drop procedure if exists ? Por lo que veo, todos los ejemplos que encuentro en internet utilizan ambos, sin embargo yo no lo he hecho.

Cuando quiero crear un sp en el Administrator me aparece una ventana con el siguiente codigo y yo a partir de ahi empiezo a ingresar el codigo:

Código MySQL:
Ver original
  1. CREATE PROCEDURE `sait1`.`stored_procedure` ()
  2.  

Gracias!
  #2 (permalink)  
Antiguo 07/05/2010, 09:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: SP - porque utilizar delimiter?

Cita:
No se si esta sea una pregunta tonta pero tengo una duda de como utilizar el delimiter... he estado creando Stored Procedures desde el MySQL Administrator y en ningun momento he utilizado el delimiter ya que si lo introduzco al inicio del SP (antes de create procedure) me aparece un error.
El DELIMITER en el MySQL Administrator lo pone el mismo programa sin que lo veas. Es parte de la rutina de carga programada.
Por eso no lo ves.

El tema es simple:
Un stored procedure debe cargarse en el sistema como un sólo objeto. Pero cuando ese script contiene múltiples líneas distintas, cada fin de sentencia tiene el delimitador de sentencias por default: ";", lo que genera un error de sintaxis.
¿Cómo hacer para que el cuerpo del script pueda cargarse sin errores? Simple: Se cambia momentáneamente el símbolo usado para delimitar las sentencias y se lo usa sólo al final del cuerpo del procedure...
Pero este sistema requiere que la interfase usada no le agregue nada, sino que se limite a enviar el script completo al MySQL. Algunas de ellas le agregan o verifican cosas, lo que hace que no sea funcional en todos los casos.

Es funcional si el script se ejecuta directamente en el MySQL Query Browser, donde incluso la plantilla de creación de procedimientos y funciones ya las incluyen, y en la consola de MySQL, donde hay que escribir todo a mano. Fuera de eso, hay que ver el uso de cada programa.
El phpMyAdmin, por ejemplo, incluye un textbox en el formulario de SQL para indicar cuál será el terminador de sentencia, por lo que allí no se necesita poner DELIMITER.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: utilidades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:34.