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

error al invocar un procedimiento almacenado

Estas en el tema de error al invocar un procedimiento almacenado en el foro de Mysql en Foros del Web. hola amigos nose si puedan ayudarme, estoy con un problema en un procedimiento almacenado que inserta datos en una tabla esta es la estructura de ...
  #1 (permalink)  
Antiguo 24/11/2008, 10:25
 
Fecha de Ingreso: agosto-2005
Mensajes: 722
Antigüedad: 18 años, 8 meses
Puntos: 2
Pregunta error al invocar un procedimiento almacenado

hola amigos nose si puedan ayudarme, estoy con un problema en un procedimiento almacenado que inserta datos en una tabla

esta es la estructura de la tabla
SupplierID varchar(10)
SupplierName varchar(50)
SupplierAddress varchar(50)
SupplierPhone varchar(50)
SupplierFax varchar(50)
SupplierEmail varchar(50)
SupplierWebsite varchar(50)
SupplierRatingID varchar(10)
SuppliersTypeID varchar(10) // referencia a otra tabla


este el insert
INSERT INTO tsuppliers VALUES (aSupplierID, aSupplierName, aSupplierAddress,aSupplierPhone,aSupplierFax,
aSupplierEmail,aSupplierWebsite,aSupplierRatingID, aSuppliersTypeID )


estos son los parametros que paso
in aSupplierID varchar(10), aSupplierName varchar(50), aSupplierAddress varchar(50),aSupplierPhone varchar(50),aSupplierFax varchar(50), aSupplierEmail varchar(50),aSupplierWebsite varchar(50),aSupplierRatingID varchar(10), aSuppliersTypeID varchar(10)


bueno y el problema surge al momento de llamar al procemiento almacenado

mysql> CALL Suppliers_Insert(20,20,20,20,20,20,20,20,TS03);
ERROR 1054 : Unknown column 'TS03' in 'field list'

lo raro es que me parece que si deberia introducirse porque TS03 esta haciendo la referencia a otra tabla y en esa tabla existe un registro con TS03

mysql> CALL Suppliers_Insert(25,20,20,20,20,20,20,20,25);
Query OK, 1 row affected

en cambio en el caso anterior 25 no esta en la otra tabla

y esto es lo extraño para mi
ayudenme porfavor
  #2 (permalink)  
Antiguo 24/11/2008, 10:58
 
Fecha de Ingreso: agosto-2005
Mensajes: 722
Antigüedad: 18 años, 8 meses
Puntos: 2
Respuesta: error al invocar un procedimiento almacenado

otra cosa al momento del error muestra el error 1054
  #3 (permalink)  
Antiguo 24/11/2008, 11:16
 
Fecha de Ingreso: agosto-2005
Mensajes: 722
Antigüedad: 18 años, 8 meses
Puntos: 2
Respuesta: error al invocar un procedimiento almacenado

creo que encontre el error esta en las comillas
CALL Suppliers_Insert('37','20','20','20','20','20','20 ','20','TS03');
este registro si es ingresado sin ningun problema
  #4 (permalink)  
Antiguo 04/12/2008, 06:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: error al invocar un procedimiento almacenado

He visto que en le ultimo campo estas llamando a datos de otra tabla, le has puesto un alias a ese campo de la tabla, e invocalo asi y fijate tambien en las comillas al momento de ingresar los datos a almacenarse.
  #5 (permalink)  
Antiguo 04/12/2008, 07:02
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: error al invocar un procedimiento almacenado

TSO debería ser, en todo caso, una variable, no un campo de otra tabla, porque lo que estás pasando es un VARCHAR, no un campo....
Esto es, los alias, o los nombres de los campos no existen más allá del momento del select. Una vez ejecutados, son los nombres de las columnas de la tabla resultado, pero no se pueden referenciar... no estás trabajando con un lenguaje de programación sino con uno de consultas. Recuerda eso.
Para que el valor de una columna en un registro permanezca, debe ser almacenado en una variable. Sino, intenta interpretarlo como nombre de columna y simplemente no lo encuentra.
Además, no puedes referenciar un nombre de columna, porque un parámetro en un SP o en una SF, debe ser siempre un valor único, y no un conjunto de registros de un campo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 21:11.