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

No me pide uno de los parámetros en un procedimiento

Estas en el tema de No me pide uno de los parámetros en un procedimiento en el foro de SQL Server en Foros del Web. Muy buenas. No entiendo porqué, pero uno de los parámetros no me lo solicita. Código: ALTER PROCEDURE PA_NuevoUsuario @usuario varchar(50), @pass char(40), @email varchar(125), @nombre ...
  #1 (permalink)  
Antiguo 07/03/2006, 10:37
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
No me pide uno de los parámetros en un procedimiento

Muy buenas. No entiendo porqué, pero uno de los parámetros no me lo solicita.
Código:
ALTER PROCEDURE PA_NuevoUsuario
@usuario varchar(50),
@pass char(40),
@email varchar(125),
@nombre varchar(125),
@apellidos varchar(250),
@direccion varchar(500),
@telefono char(50),
@profesion varchar(500),
@mostrarMail bit,
@mostrarProf bit,
@mostrarTel bit
AS 
BEGIN
	INSERT INTO usuarios 
		(usuario,pass,email,Nombre,Apellidos,Direccion,Telefono,Profesion,mostrarMail,mostrarProf,mostrarTel,activado,IDrol)
		VALUES 
		(@usuario,@pass,@email,@nombre,@apellidos,@direccion,@telefono,@profesion,@mostrarMail,@mostrarProf,@mostrarTel,0,3)
	SELECT @@IDENTITY
END
En la tabla, el campo Nombre se queda con el valor 'Microsoft Access'. En una aplicación ASP.Net intento llamar al procedimiento y me da este error:
Cita:
Parameter count does not match Parameter Value count
¿Cómo se puede solucionar esto?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 07/03/2006, 10:48
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
como estas haciendo tu llamada al SP?
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 07/03/2006, 19:24
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Iniciado por Bravenap
En una aplicación ASP.Net intento llamar al procedimiento y me da este error:
ya te aseguraste que desde tu aplicacion (codebehind) el nombre y numero de parametros sean los mismos que los de tus SP´s ??

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 08/03/2006, 02:17
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Gracias a los dos por las respuestas. Vamos a ver. Para conectarme con el servidor SQL utilizo dos modos, uno mediante un adaptador ADP de Access y otro mediante ADO.Net en mi proyecto de ASP.Net.

Con el adaptador de Access ejecuto el procedimiento (doble click en el mismo) y van apareciedo las ventanitas para que le de los valores a los parámetros de entrada. De @email pasa directamente a pedirme @apellidos, con lo que se salta @nombre. No obstante, en la tabla donde inserta los datos el procedimiento, el campo Nombre aparece con valor 'Microsoft Access'.

El código de la página ASP.Net es este:

Código:
Dim parametros(11) As SqlClient.SqlParameter
            parametros.SetValue(New SqlClient.SqlParameter("usuario", Me.txtUsuario.Text.Trim), 0)
            parametros.SetValue(New SqlClient.SqlParameter("pass", hash(Me.txtPass.Text.Trim)), 1)
            parametros.SetValue(New SqlClient.SqlParameter("email", Me.txtEmail.Text.Trim), 2)
            parametros.SetValue(New SqlClient.SqlParameter("nombre", Me.txtNombre.Text.Trim), 3)
            parametros.SetValue(New SqlClient.SqlParameter("apellidos", Me.txtApellidos.Text.Trim), 4)
            parametros.SetValue(New SqlClient.SqlParameter("direccion", Me.txtDireccion.Text.Trim), 5)
            parametros.SetValue(New SqlClient.SqlParameter("telefono", Me.txtTelefono.Text.Trim), 6)
            parametros.SetValue(New SqlClient.SqlParameter("profesion", Me.txtProfesion.Text.Trim), 7)
            parametros.SetValue(New SqlClient.SqlParameter("mostrarMail", Me.chkEmail.Checked), 8)
            parametros.SetValue(New SqlClient.SqlParameter("mostrarProf", Me.chkProfesion.Checked), 9)
            parametros.SetValue(New SqlClient.SqlParameter("mostrarTel", Me.chkTelefono.Checked), 10)

            Dim idUsuario As Integer

            Try
                idUsuario = OrigenDatos.EjecutaPA("PA_NuevoUsuario", parametros).Tables(0).Rows(0).Item(0)
            Catch ex As Exception
                MensajeError("No se ha podido realizar el registro<br>" & ex.Message)
                Exit Sub
            End Try
....
...
        Public Overloads Shared Function EjecutaPA(ByVal nombrePA As String, ByVal parametros() As SqlParameter) As DataSet
            Return SqlHelper.ExecuteDataset(con, nombrePA, parametros)
        End Function
No me da problemas con ningún otro procedimiento, eso sí, hasta ahora no pasabe más de tres parámetros.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 08/03/2006, 02:32
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Debe ser que el parámetro @nombre no le hacía mucha gracia al servidor SQL. Lo he cambiado por @nom y ya funciona.

Cosas que pasan. En fin, que parche al descosido y a seguir trabajando.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #6 (permalink)  
Antiguo 08/03/2006, 02:46
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Bueno, el error era por partida doble. Primero el de SQL Server que incomprensiblemente ya se ha solucionado como he comentado antes. Luego viene el error de la aplicación ASP.Net y creo que en concreto era por definir previamente el tamaño del vector de parámetros. Antes lo hacía de esta otra forma y no daba problemas:

Código:
Dim parametros() as SqlParameter = {New SqlParameter("param1", "valor1"), New SqlParameter("param2","valor2")}
Así que voy a probar así y os comento.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
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 19:20.