Procedimiento Almacenado

25/03/2009 - 17:51 por Felipe CR | Informe spam
Hola

Tengo el siguiente procedimiento almacenado


PROCEDURE [dbo].[BuscarIdPais]
@PNombre NVarChar(50)
AS


DECLARE @result as smallint
SELECT @result = dbo.GEN_COUNTRY.Id from dbo.GEN_COUNTRY where
dbo.GEN_COUNTRY.Nombre = @PNombre
SELECT @result


Y trato de llamarlo desde VB 2005 de la siguiente forma:
Public Shared Function BuscarIdPais(ByVal Nombre As String) As
Integer
'Se le ingresa un nombre de un pais y devuelve el respectivo
ID
Dim connection As SqlClient.SqlConnection = _
New SqlClient.SqlConnection(Main.CnxStr)
connection.Open()
Try
Dim cmdParametrizado As Data.SqlClient.SqlCommand
Dim paramPais As Data.SqlClient.SqlParameter
Dim paramResultado As Data.SqlClient.SqlParameter
cmdParametrizado = New SqlClient.SqlCommand
("BuscarIdPais", connection)
cmdParametrizado.CommandType Data.CommandType.StoredProcedure
paramPais = cmdParametrizado.Parameters.Add("@PNombre",
Data.SqlDbType.NVarChar)
paramPais.Direction = Data.ParameterDirection.Input
paramPais.Value = Nombre 'Le asignamos el nombre del pais
que deseamos buscar
paramResultado = cmdParametrizado.Parameters.Add
("@result", Data.SqlDbType.SmallInt)
paramResultado.Direction = Data.ParameterDirection.Output
cmdParametrizado.ExecuteNonQuery() ' Ejecutamos la
consulta
Dim Resultado As Integer = paramResultado.Value
Return Resultado
Catch e As Exception
MessageBox.Show(e.Message)
Finally
connection.Close()
End Try
End Function


Pero no funciona, me muestra la siguiente excepcion:


La función o el procedimiento BuscarIdPais tiene demasiados
argumentos.


Que estoy haciendo mal?


Saludos y gracias!

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera
25/03/2009 - 18:14 | Informe spam
Lo que usted está haciendo mal es que en su programación usa un parámetro de
OUTPUT @result y usted se ha olvidado de declarar tal parámetro en el stored
procedure. Algo así:

PROCEDURE [dbo].[BuscarIdPais]
@PNombre NVarChar(50),
@Result SMALLINT OUTPUT
AS
. . .

Vea los detalles en:

Using a Stored Procedure with Output Parameters
http://msdn.microsoft.com/en-us/library/ms378108(SQL.90).aspx

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Felipe CR" wrote:

Hola

Tengo el siguiente procedimiento almacenado


PROCEDURE [dbo].[BuscarIdPais]
@PNombre NVarChar(50)
AS


DECLARE @result as smallint
SELECT @result = dbo.GEN_COUNTRY.Id from dbo.GEN_COUNTRY where
dbo.GEN_COUNTRY.Nombre = @PNombre
SELECT @result


Y trato de llamarlo desde VB 2005 de la siguiente forma:
Public Shared Function BuscarIdPais(ByVal Nombre As String) As
Integer
'Se le ingresa un nombre de un pais y devuelve el respectivo
ID
Dim connection As SqlClient.SqlConnection = _
New SqlClient.SqlConnection(Main.CnxStr)
connection.Open()
Try
Dim cmdParametrizado As Data.SqlClient.SqlCommand
Dim paramPais As Data.SqlClient.SqlParameter
Dim paramResultado As Data.SqlClient.SqlParameter
cmdParametrizado = New SqlClient.SqlCommand
("BuscarIdPais", connection)
cmdParametrizado.CommandType > Data.CommandType.StoredProcedure
paramPais = cmdParametrizado.Parameters.Add("@PNombre",
Data.SqlDbType.NVarChar)
paramPais.Direction = Data.ParameterDirection.Input
paramPais.Value = Nombre 'Le asignamos el nombre del pais
que deseamos buscar
paramResultado = cmdParametrizado.Parameters.Add
("@result", Data.SqlDbType.SmallInt)
paramResultado.Direction = Data.ParameterDirection.Output
cmdParametrizado.ExecuteNonQuery() ' Ejecutamos la
consulta
Dim Resultado As Integer = paramResultado.Value
Return Resultado
Catch e As Exception
MessageBox.Show(e.Message)
Finally
connection.Close()
End Try
End Function


Pero no funciona, me muestra la siguiente excepcion:


La función o el procedimiento BuscarIdPais tiene demasiados
argumentos.


Que estoy haciendo mal?


Saludos y gracias!


Respuesta Responder a este mensaje
#2 Felipe CR
25/03/2009 - 19:04 | Informe spam
Es correcto Gustavo, por ahí andaba el problema:

Ahora lo definí así :

PROCEDURE [dbo].[BuscarIdPais]
( @PNombre NVarChar(50),
@result as Smallint OUTPUT )
AS

SELECT @result = dbo.GEN_COUNTRY.Id from dbo.GEN_COUNTRY where
dbo.GEN_COUNTRY.Nombre = @PNombre

Y problema resuelto!

Gracias por su ayuda!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida