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

Hacer script utilizando procedimiento

Estas en el tema de Hacer script utilizando procedimiento en el foro de Mysql en Foros del Web. Hola amigos , soy nueva en el tema y estoy tratando de hacer script, he buscado en internet y leido en otros temas sobre como ...
  #1 (permalink)  
Antiguo 23/03/2011, 08:26
 
Fecha de Ingreso: marzo-2011
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Hacer script utilizando procedimiento

Hola amigos , soy nueva en el tema y estoy tratando de hacer script, he buscado en internet y leido en otros
temas sobre como crear un procedimeinto, pero en realidad no me sale cuando lo intento
y tampoco estoy muy segura si es lo que debo hacer.
Deseo crear una variable(titulo) y asignarle un valor y luego entrarlo a la tabla esto seria para el primer caso(tabla products_description ).
En el segundo caso deseo crear otra variable y asignarle en ves de 100 que es lo que identifica a nacionales , deseo pasarle nacionales y que
en vez de un numero que es lo que el espera deseo introducile un nombre de la categoria que en este caso referenciaría al 100 , que son las nacionales.



Procedure 'prueba'()

begin

declare @titulo varchar(25);
declare @nacionales int;

set @titulo='testetst';
set @nacionales='100'

INSERT INTO products_description (products_id, language_id, products_name, products_description, products_url, products_viewed)
VALUES(
'int not NULL auto_increment', '3','@titulo', ' descripcion ejemplo','url.test.com', '1');


INSERT INTO products_to_categories (products_id, categories_id)
VALUES(
'int not NULL auto_increment', 'nacionales');



end;


No se si me he explicado bien.

Por favor , si alguien me podría ayudar.
  #2 (permalink)  
Antiguo 23/03/2011, 08:55
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, 4 meses
Puntos: 2658
Respuesta: Hacer script utilizando procedimiento

Uno de los problemas de tu procedimiento es que estás mezclando sintaxis de PHP con MySQL y algo de SQL Server.

- Las variables con "@" no se declaran en MySQL. Son variables de usuario y no locales de procedures. No tienen tipo de dato hasta que se inicalizan y existen manteniendo su valor hasta que la conexión se cierra.
- Los procedimientos se deben crear (CREATE PROCEDURE xxxxx)
- Si tienen más de una sentencia, deben ir entre cláusulas BEGIN/END, las cuales no se pueden anidar.
- Para cargarlos se debe usar una interfaz, o bien hacerlo por consola, pero en cualquier caso deben usarse cambios de delimitador de sentencias para que se cargue como un sólo bloque, a excepción de crearlas por programación de la aplicación.
- Si las columnas son AUTO_INCREMENT, no hace falta poner el valor a ingresar (lo genera MySQL), y ciertamente no se pone de esa forma.
- Los nombres de bases, tablas, columnas, funciones almacenadas, procedimientos almacenados o triggers no van entre apóstrofes sino que pueden ir entre acentos inversos. Esto es obligatorio si contienen caracteres especiales, palabras reservadas o espacios.
- Los valores numéricos asignados a campos numéricos no van entre apóstrofes.
- Las variables usadas no se encierran ente apóstrofes. Se usan tal y como están.
- Las variables locales no deben tener el mismo nombre de las tablas o los campos. Tampoco llevan "@".
- No existe una sintaxis universal para todos los DBMS. MySQL, Postgre, Oracle, DB2 o SQL Server tienen diferentes sintaxis para los procedimientos.

Una sintaxis aproximada de lo que necesitas sería:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE `prueba`()
  3.  
  4.     DECLARE titulo VARCHAR(25);
  5.     DECLARE nacionales INT DEFAULT 0;
  6.  
  7.     SET titulo='testetst';
  8.     SET nacionales='100';
  9.     INSERT INTO products_description (language_id, products_name, products_description, products_url, products_viewed)
  10.     VALUES(3, titulo, 'descripcion ejemplo','url.test.com', 1);
  11.     INSERT INTO products_to_categories(categories_id)
  12.     VALUES(nacionales);
  13. END$$
  14. 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)
  #3 (permalink)  
Antiguo 23/03/2011, 12:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Hacer script utilizando procedimiento

Hola gnzsoloyo:
Muchas gracias por responder, de verdad me aclaraste muchas muchísimas dudas, ejecuté la sintaxis que anteriormente me enviaste, en la interfaz de php myadmin (sql ) y esta vez si no me dio error , pero cuando voy a buscar en las tablas para ver si lo insertó, no logro ver nada y si vuelvo a ejecuar la sintaxis , me da error si no le cambio el nombre al procediemiento.
Sabes por qué me ocurre estos?,
debo preguntar si el procediento esta creado y si está borrarlo y volverlo a crear?,
por que no sufrieron cambios las tablas donde inserté, los datos?

gracias otra vez , saludos!

Última edición por jane985; 23/03/2011 a las 12:58
  #4 (permalink)  
Antiguo 23/03/2011, 13:37
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, 4 meses
Puntos: 2658
Respuesta: Hacer script utilizando procedimiento

Cita:
debo preguntar si el procediento esta creado y si está borrarlo y volverlo a crear?,
Los procedimientos son objetos fijos de la base de datos. Para poder modificarlos se debe primero borrar el anterior.
Respecto a los errores, lo mejor es que pruebes primero manualmente los insert para ver si funcionan bien por si mismos:
Código MySQL:
Ver original
  1. INSERT INTO products_description (language_id, products_name, products_description, products_url, products_viewed)
  2.     VALUES(3, 'testetst', 'descripcion ejemplo','url.test.com', 1);
  3.     INSERT INTO products_to_categories(categories_id)
  4.     VALUES(100);
Si los INSERT funcionan bien, entonces hay que verificar si el SP está generando un error (asumo que los estás llamando con CALL prueba;)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 23/03/2011, 14:17
 
Fecha de Ingreso: marzo-2011
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Hacer script utilizando procedimiento

Muchas gracias gnzsoloyo, ahora si me funcionó, en realidad no lo estaba llamando con Call, por eso no se insertaban en las tablas, y cuando intentaba modificar el procedimiento no estaba borrando el anterior , arreglé todo como me sugeriste
y problema solucionado.
Mil gracias, Saludos!
  #6 (permalink)  
Antiguo 23/03/2011, 18:39
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, 4 meses
Puntos: 2658
Respuesta: Hacer script utilizando procedimiento

__________________
¿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: procedimiento
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 05:56.