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

Parametros de entrada en SP

Estas en el tema de Parametros de entrada en SP en el foro de Mysql en Foros del Web. Buenas a todos, soy nuevo en este foro y comento que llevo algunos años ya trabajando en .net y sql server, y ahora estoy buscando ...
  #1 (permalink)  
Antiguo 03/04/2009, 06:20
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años
Puntos: 0
Pregunta Parametros de entrada en SP

Buenas a todos, soy nuevo en este foro y comento que llevo algunos años ya trabajando en .net y sql server, y ahora estoy buscando y probando otras tecnologías. El tema de mi primer mensaje es que estoy realizando un proyecto en .net con MYSQL 5.1 y me he encontrado con algunas cosillas que no he podido resolver por ahora.
El tema es que he creado un SP y no puedo definir parametros varchar, me tira error al compilar el SP desde la consola, solo me deja Char, pero los declaro asi y no se si es por eso pero al ejecutar el SP desde .net me tira el error de "data too long" si pongo mas de un caracter en esa variable char. Los campos están definidos como varchar(100) en la tabla y es Inodb.
Bueno por ahora este tema así no los vuelvo locos.
Muchas gracias
  #2 (permalink)  
Antiguo 03/04/2009, 07:13
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: Parametros de entrada en SP

Los SP de MySQL no admiten los VARCHAR, pero si los CHAR. Ahora bien, si lees el manual de referencia oficial (Capítulo 11. Tipos de columna) verás que un CHAR es un byte solamente, por lo que para ingresar 100 bytes debes declarar CHAR(1000)... exactamente igual que si lo hicieras con el VARCHAR.
__________________
¿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 03/04/2009, 10:28
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años
Puntos: 0
Respuesta: Parametros de entrada en SP

Gracias, como verás recién empiezo con MYSQL y seguramente me toparé con más inconvenientes.
Saludos
  #4 (permalink)  
Antiguo 04/04/2009, 20:37
 
Fecha de Ingreso: junio-2004
Ubicación: Valdivia
Mensajes: 24
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Parametros de entrada en SP

con que version de mysql trabajas, yo tengo la 5 y antes siempre trabajaba con oracle y varchar2 y en mysql no tube problemas, solo se cambia a varchar si no me equivoco.

aqui un ejemplo de SP que hace lo que necesitas

-- Procedure: login

-- DROP PROCEDURE IF EXISTS `login`;

DELIMITER |

CREATE PROCEDURE `login`
(
IN `nick_var` varchar(50),
IN `clave_var` varchar(50)
)
BEGIN
declare id int;
select u.`id_usuario` into id
from usuarios u
where u.`nick` = nick_var
and u.`clave` = clave_var;
if id is null then
select -1;
else
update usuarios
set usuarios.`estado` = 'c'
where usuarios.`id_usuario` = id;

select u.`id_usuario`, u.`nick`, u.`tipo`, u.`email`
from usuarios u
where u.`id_usuario` = id;
end if;
END|

DELIMITER ;


ami me funciona :s

saludos
  #5 (permalink)  
Antiguo 05/04/2009, 08:54
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años
Puntos: 0
Respuesta: Parametros de entrada en SP

Hola, como varchar() los parámetros me tira error, he conseguido hacerlo con char, este es el código

CREATE DEFINER=`root`@`localhost` PROCEDURE `UsuarioAlta`(nombreus char(100),in pass char(100),in nombre char(100),in idioma int,in codcalle int,in num int,in piso int,in dpto char(10),in codloc int,in telefono int,in celular int,in comision int,in ostatus int,in dvh int)
BEGIN

declare codigo int;
set codigo=(select max(Cod_Us) from Usuario)+1;


Insert into Usuario (Cod_Us, nombreus,Clave,nombre, Cod_Idioma, cod_calle,num, piso, dpto, Cod_Localidad, telefono, celular, Comision,Statuss, DVH)
values (codigo, nombreus,pass, nombre, idioma, codcalle, num,piso,dpto,codloc, telefono, celular, comision, ostatus, dvh);

END

Gracias
  #6 (permalink)  
Antiguo 05/04/2009, 17:25
 
Fecha de Ingreso: junio-2004
Ubicación: Valdivia
Mensajes: 24
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Parametros de entrada en SP

y tu delimitadores? no lo has definido, lo otro porque no usas algun software que te permita escribir todo el codigo que necesitas y solo te preocupas de que la algoritmia este bien, ya que yo tube igual algunos inconvenientes al hacerlo a mano.
prueba con SQL Maestro for MySql ese ocupo yo y cero dramas, ahora es obvio que deja declarar varchars de entrada, sino a mi nome funcionaria.

ahora intentaste declarar nombre_sp( in arg1 varchar(100), in arg2 varchar(100) )

saludos espero tu respuesta ;)
  #7 (permalink)  
Antiguo 05/04/2009, 17: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: Parametros de entrada en SP

He revisado nuevamente la bibliografía con que cuento, y he realizado algunas pruebas en mis bases de datos y no encuentro problemas para que se pueda ingresar un parámetro VARCHAR en un store procedure, por lo que el SP en cuestión debería aceptar ese tipo de datos.
¿Podrías decirnos qué error es el que declara MySQL al querer ingresar el SP?
__________________
¿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 05:31.