Paramteros de Salida de Stored Procedure

23/02/2006 - 23:42 por Alicia | Informe spam
Hola, tengo este código:

Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim miConexion As New SqlConnection
miConexion.ConnectionString = "Persist Security
Info=False;Integrated
Security=SSPI;databaseÛGAMA-SEGURIDAD;server=DLT-XD4SAC0N1NN;"

Dim miComando As New SqlCommand("spIngreso_Perfil", miConexion)
miComando.CommandType = CommandType.StoredProcedure

miComando.Parameters.Add(New SqlParameter("@Perfil",
SqlDbType.VarChar, 32))
miComando.Parameters("@Perfil").Value = OPERFIL.Get_Perfil

miComando.Parameters.Add(New SqlParameter("@ID_Registro",
SqlDbType.Int, 9))
miComando.Parameters("ID_Registro").Direction =
ParameterDirection.Output

miConexion.Open()
Dim ID_Registro As Double

miComando.ExecuteNonQuery()
'Obtengo el ID del Registro insertado
ID_Registro = CType(miComando.Parameters("@ID_Registro").Value,
Double)

miConexion.Close()

Pero cuando ejecuto esto me da este mensaje de error
"SQLParameter no contiene SQLParameter con PArameter Name 'ID_Resgitro' "

El Código del stored es:
CREATE PROCEDURE [dbo].[spIngreso_Perfil]
@Perfil varchar(32),
@ID_Registro numeric(9) output

AS

declare
@ID_Perfil numeric(9)

BEGIN TRANSACTION

if (Select MAX(ID_Perfil) from Perfiles) is not null

select @ID_Perfil = (Select MAX(ID_Perfil) from Perfiles) +1
else
select @ID_Perfil = 1

Insert Into
Perfiles (ID_Perfil, Perfil, Baja)
Values (@ID_Perfil, @Perfil, 0)

IF @@error <> 0
begin
ROLLBACK TRANSACTION
Select @ID_Registro = 0
return
end

Select @ID_Registro = @ID_Perfil

COMMIT TRANSACTION
GO

Alguien me puede decir que estoy haciendo mal? o algún ejemplo de parametros
de salida, ya que en la ayuda me es dificil encontrar lo que busco y no
encontre ninguno con parametros de salida, sólo de retorno de valor.-

Uso VBNet Enterprice 2003
Gracias y hasta pronto

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
24/02/2006 - 03:06 | Informe spam
Aqui:

miComando.Parameters("ID_Registro").Direction =
ParameterDirection.Output



te falta @ delante del nombre del parametro.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Jesús López
24/02/2006 - 08:07 | Informe spam
Eduardo tiene razón,

De todas formas si usaras mi generador de clases para procedimientos
almacenados, nunca tendrías este tipo de problemas y no tendrías que
escribir todo el código que has escrito para configurar la colección de
parámetros del comando.

Con mi generador la cosa sería así de fácil:
Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim cn as New SqlConnection(CadenaConexión)
Dim sp As New spIngreso_Perfil()
sp.Connection = cn
cn.Open()
sp.ExecuteNonQuery(OPERFIL.Get_Perfil)
OPERFIL.ID_Registro = sp.ID_Registro
cn.Close
End Sub

Lástima que todavía no te hayas pasado a 2005, ya mi generador no funciona
con 2003

Saludos:

Jesús López
MVP



"Alicia" escribió en el mensaje
news:
Hola, tengo este código:

Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim miConexion As New SqlConnection
miConexion.ConnectionString = "Persist Security
Info=False;Integrated
Security=SSPI;databaseÛGAMA-SEGURIDAD;server=DLT-XD4SAC0N1NN;"

Dim miComando As New SqlCommand("spIngreso_Perfil", miConexion)
miComando.CommandType = CommandType.StoredProcedure

miComando.Parameters.Add(New SqlParameter("@Perfil",
SqlDbType.VarChar, 32))
miComando.Parameters("@Perfil").Value = OPERFIL.Get_Perfil

miComando.Parameters.Add(New SqlParameter("@ID_Registro",
SqlDbType.Int, 9))
miComando.Parameters("ID_Registro").Direction > ParameterDirection.Output

miConexion.Open()
Dim ID_Registro As Double

miComando.ExecuteNonQuery()
'Obtengo el ID del Registro insertado
ID_Registro = CType(miComando.Parameters("@ID_Registro").Value,
Double)

miConexion.Close()

Pero cuando ejecuto esto me da este mensaje de error
"SQLParameter no contiene SQLParameter con PArameter Name 'ID_Resgitro' "

El Código del stored es:
CREATE PROCEDURE [dbo].[spIngreso_Perfil]
@Perfil varchar(32),
@ID_Registro numeric(9) output

AS

declare
@ID_Perfil numeric(9)

BEGIN TRANSACTION

if (Select MAX(ID_Perfil) from Perfiles) is not null

select @ID_Perfil = (Select MAX(ID_Perfil) from Perfiles) +1
else
select @ID_Perfil = 1

Insert Into
Perfiles (ID_Perfil, Perfil, Baja)
Values (@ID_Perfil, @Perfil, 0)

IF @@error <> 0
begin
ROLLBACK TRANSACTION
Select @ID_Registro = 0
return
end

Select @ID_Registro = @ID_Perfil

COMMIT TRANSACTION
GO

Alguien me puede decir que estoy haciendo mal? o algún ejemplo de
parametros
de salida, ya que en la ayuda me es dificil encontrar lo que busco y no
encontre ninguno con parametros de salida, sólo de retorno de valor.-

Uso VBNet Enterprice 2003
Gracias y hasta pronto





Respuesta Responder a este mensaje
#3 Lord Voldemort
25/02/2006 - 00:20 | Informe spam
hola Jesus ...
tu generador lo das gratis???
donde puedo bajarlo...



un gran saludo de

Lord Voldemort..
Cerquita del mismisimo infierno..
LordVoldemort8@@@Gmail.com

Mis armas Visual Estudio 2003 y SQLServer 2000

"Jesús López" wrote in message
news:
Eduardo tiene razón,

De todas formas si usaras mi generador de clases para procedimientos
almacenados, nunca tendrías este tipo de problemas y no tendrías que
escribir todo el código que has escrito para configurar la colección de
parámetros del comando.

Con mi generador la cosa sería así de fácil:
Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim cn as New SqlConnection(CadenaConexión)
Dim sp As New spIngreso_Perfil()
sp.Connection = cn
cn.Open()
sp.ExecuteNonQuery(OPERFIL.Get_Perfil)
OPERFIL.ID_Registro = sp.ID_Registro
cn.Close
End Sub

Lástima que todavía no te hayas pasado a 2005, ya mi generador no funciona
con 2003

Saludos:

Jesús López
MVP



"Alicia" escribió en el mensaje
news:
Hola, tengo este código:

Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim miConexion As New SqlConnection
miConexion.ConnectionString = "Persist Security
Info=False;Integrated
Security=SSPI;databaseÛGAMA-SEGURIDAD;server=DLT-XD4SAC0N1NN;"

Dim miComando As New SqlCommand("spIngreso_Perfil", miConexion)
miComando.CommandType = CommandType.StoredProcedure

miComando.Parameters.Add(New SqlParameter("@Perfil",
SqlDbType.VarChar, 32))
miComando.Parameters("@Perfil").Value = OPERFIL.Get_Perfil

miComando.Parameters.Add(New SqlParameter("@ID_Registro",
SqlDbType.Int, 9))
miComando.Parameters("ID_Registro").Direction >> ParameterDirection.Output

miConexion.Open()
Dim ID_Registro As Double

miComando.ExecuteNonQuery()
'Obtengo el ID del Registro insertado
ID_Registro =
CType(miComando.Parameters("@ID_Registro").Value,
Double)

miConexion.Close()

Pero cuando ejecuto esto me da este mensaje de error
"SQLParameter no contiene SQLParameter con PArameter Name 'ID_Resgitro' "

El Código del stored es:
CREATE PROCEDURE [dbo].[spIngreso_Perfil]
@Perfil varchar(32),
@ID_Registro numeric(9) output

AS

declare
@ID_Perfil numeric(9)

BEGIN TRANSACTION

if (Select MAX(ID_Perfil) from Perfiles) is not null

select @ID_Perfil = (Select MAX(ID_Perfil) from Perfiles) +1
else
select @ID_Perfil = 1

Insert Into
Perfiles (ID_Perfil, Perfil, Baja)
Values (@ID_Perfil, @Perfil, 0)

IF @@error <> 0
begin
ROLLBACK TRANSACTION
Select @ID_Registro = 0
return
end

Select @ID_Registro = @ID_Perfil

COMMIT TRANSACTION
GO

Alguien me puede decir que estoy haciendo mal? o algún ejemplo de
parametros
de salida, ya que en la ayuda me es dificil encontrar lo que busco y no
encontre ninguno con parametros de salida, sólo de retorno de valor.-

Uso VBNet Enterprice 2003
Gracias y hasta pronto









Respuesta Responder a este mensaje
#4 Jesús López
25/02/2006 - 13:04 | Informe spam
Ecríbeme a esta dirección y te lo envío:

sqlranger arroba mvps punto org

Es totalmente gratis. Además voy a publicarlo en Code Project cuando esté
más a mi gusto.

Ahora está así:

* Los items StoredProcedures.sps son archivos xml resultado de
DataSet.WriteXml
* El paquete de instalación msi está hecho con un proyecto de instalación de
Visual Studio
* Las clases generadas contienen todo el código y heredan de Object.
* Funciona en VS 2005 con proyectos de C# y VB. También funciona en VB
Express

Y lo quiero tener así:

* Los items StoredProcedures.sps los voy a guardar como un dataset
serializado en binario
* El paquete de instalación lo estoy migrando a WinX (votive)
http://wix.sourceforge.net/
* Las clases generadas heredarán de una clase base abstracta que incluirá
gran parte de la funcionalidad, reduciendo considerablemente la cantidad de
código generado.
* Funcionará también en C# Express.

Saludos:

Jesús López
MVP



"Lord Voldemort" <lordvoldemort8@@@gmail.com> escribió en el mensaje
news:
hola Jesus ...
tu generador lo das gratis???
donde puedo bajarlo...



un gran saludo de

Lord Voldemort..
Cerquita del mismisimo infierno..
LordVoldemort8@@@Gmail.com

Mis armas Visual Estudio 2003 y SQLServer 2000

"Jesús López" wrote in message
news:
Eduardo tiene razón,

De todas formas si usaras mi generador de clases para procedimientos
almacenados, nunca tendrías este tipo de problemas y no tendrías que
escribir todo el código que has escrito para configurar la colección de
parámetros del comando.

Con mi generador la cosa sería así de fácil:
Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim cn as New SqlConnection(CadenaConexión)
Dim sp As New spIngreso_Perfil()
sp.Connection = cn
cn.Open()
sp.ExecuteNonQuery(OPERFIL.Get_Perfil)
OPERFIL.ID_Registro = sp.ID_Registro
cn.Close
End Sub

Lástima que todavía no te hayas pasado a 2005, ya mi generador no
funciona con 2003

Saludos:

Jesús López
MVP



"Alicia" escribió en el mensaje
news:
Hola, tengo este código:

Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim miConexion As New SqlConnection
miConexion.ConnectionString = "Persist Security
Info=False;Integrated
Security=SSPI;databaseÛGAMA-SEGURIDAD;server=DLT-XD4SAC0N1NN;"

Dim miComando As New SqlCommand("spIngreso_Perfil", miConexion)
miComando.CommandType = CommandType.StoredProcedure

miComando.Parameters.Add(New SqlParameter("@Perfil",
SqlDbType.VarChar, 32))
miComando.Parameters("@Perfil").Value = OPERFIL.Get_Perfil

miComando.Parameters.Add(New SqlParameter("@ID_Registro",
SqlDbType.Int, 9))
miComando.Parameters("ID_Registro").Direction >>> ParameterDirection.Output

miConexion.Open()
Dim ID_Registro As Double

miComando.ExecuteNonQuery()
'Obtengo el ID del Registro insertado
ID_Registro =
CType(miComando.Parameters("@ID_Registro").Value,
Double)

miConexion.Close()

Pero cuando ejecuto esto me da este mensaje de error
"SQLParameter no contiene SQLParameter con PArameter Name 'ID_Resgitro'
"

El Código del stored es:
CREATE PROCEDURE [dbo].[spIngreso_Perfil]
@Perfil varchar(32),
@ID_Registro numeric(9) output

AS

declare
@ID_Perfil numeric(9)

BEGIN TRANSACTION

if (Select MAX(ID_Perfil) from Perfiles) is not null

select @ID_Perfil = (Select MAX(ID_Perfil) from Perfiles) +1
else
select @ID_Perfil = 1

Insert Into
Perfiles (ID_Perfil, Perfil, Baja)
Values (@ID_Perfil, @Perfil, 0)

IF @@error <> 0
begin
ROLLBACK TRANSACTION
Select @ID_Registro = 0
return
end

Select @ID_Registro = @ID_Perfil

COMMIT TRANSACTION
GO

Alguien me puede decir que estoy haciendo mal? o algún ejemplo de
parametros
de salida, ya que en la ayuda me es dificil encontrar lo que busco y no
encontre ninguno con parametros de salida, sólo de retorno de valor.-

Uso VBNet Enterprice 2003
Gracias y hasta pronto













Respuesta Responder a este mensaje
#5 Lord Voldemort
28/02/2006 - 14:59 | Informe spam
excelentisimo señor



un gran saludo de

Lord Voldemort..
Cerquita del mismisimo infierno..
LordVoldemort8@@@Gmail.com

Mis armas Visual Estudio 2003 y SQLServer 2000
"Jesús López" wrote in message
news:
Ecríbeme a esta dirección y te lo envío:

sqlranger arroba mvps punto org

Es totalmente gratis. Además voy a publicarlo en Code Project cuando esté
más a mi gusto.

Ahora está así:

* Los items StoredProcedures.sps son archivos xml resultado de
DataSet.WriteXml
* El paquete de instalación msi está hecho con un proyecto de instalación
de Visual Studio
* Las clases generadas contienen todo el código y heredan de Object.
* Funciona en VS 2005 con proyectos de C# y VB. También funciona en VB
Express

Y lo quiero tener así:

* Los items StoredProcedures.sps los voy a guardar como un dataset
serializado en binario
* El paquete de instalación lo estoy migrando a WinX (votive)
http://wix.sourceforge.net/
* Las clases generadas heredarán de una clase base abstracta que incluirá
gran parte de la funcionalidad, reduciendo considerablemente la cantidad
de código generado.
* Funcionará también en C# Express.

Saludos:

Jesús López
MVP



"Lord Voldemort" <lordvoldemort8@@@gmail.com> escribió en el mensaje
news:
hola Jesus ...
tu generador lo das gratis???
donde puedo bajarlo...



un gran saludo de

Lord Voldemort..
Cerquita del mismisimo infierno..
LordVoldemort8@@@Gmail.com

Mis armas Visual Estudio 2003 y SQLServer 2000

"Jesús López" wrote in message
news:
Eduardo tiene razón,

De todas formas si usaras mi generador de clases para procedimientos
almacenados, nunca tendrías este tipo de problemas y no tendrías que
escribir todo el código que has escrito para configurar la colección de
parámetros del comando.

Con mi generador la cosa sería así de fácil:
Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim cn as New SqlConnection(CadenaConexión)
Dim sp As New spIngreso_Perfil()
sp.Connection = cn
cn.Open()
sp.ExecuteNonQuery(OPERFIL.Get_Perfil)
OPERFIL.ID_Registro = sp.ID_Registro
cn.Close
End Sub

Lástima que todavía no te hayas pasado a 2005, ya mi generador no
funciona con 2003

Saludos:

Jesús López
MVP



"Alicia" escribió en el mensaje
news:
Hola, tengo este código:

Public Sub Ingreso(ByRef OPERFIL As oPerfil)
Dim miConexion As New SqlConnection
miConexion.ConnectionString = "Persist Security
Info=False;Integrated
Security=SSPI;databaseÛGAMA-SEGURIDAD;server=DLT-XD4SAC0N1NN;"

Dim miComando As New SqlCommand("spIngreso_Perfil", miConexion)
miComando.CommandType = CommandType.StoredProcedure

miComando.Parameters.Add(New SqlParameter("@Perfil",
SqlDbType.VarChar, 32))
miComando.Parameters("@Perfil").Value = OPERFIL.Get_Perfil

miComando.Parameters.Add(New SqlParameter("@ID_Registro",
SqlDbType.Int, 9))
miComando.Parameters("ID_Registro").Direction >>>> ParameterDirection.Output

miConexion.Open()
Dim ID_Registro As Double

miComando.ExecuteNonQuery()
'Obtengo el ID del Registro insertado
ID_Registro =
CType(miComando.Parameters("@ID_Registro").Value,
Double)

miConexion.Close()

Pero cuando ejecuto esto me da este mensaje de error
"SQLParameter no contiene SQLParameter con PArameter Name 'ID_Resgitro'
"

El Código del stored es:
CREATE PROCEDURE [dbo].[spIngreso_Perfil]
@Perfil varchar(32),
@ID_Registro numeric(9) output

AS

declare
@ID_Perfil numeric(9)

BEGIN TRANSACTION

if (Select MAX(ID_Perfil) from Perfiles) is not null

select @ID_Perfil = (Select MAX(ID_Perfil) from Perfiles) +1
else
select @ID_Perfil = 1

Insert Into
Perfiles (ID_Perfil, Perfil, Baja)
Values (@ID_Perfil, @Perfil, 0)

IF @@error <> 0
begin
ROLLBACK TRANSACTION
Select @ID_Registro = 0
return
end

Select @ID_Registro = @ID_Perfil

COMMIT TRANSACTION
GO

Alguien me puede decir que estoy haciendo mal? o algún ejemplo de
parametros
de salida, ya que en la ayuda me es dificil encontrar lo que busco y no
encontre ninguno con parametros de salida, sólo de retorno de valor.-

Uso VBNet Enterprice 2003
Gracias y hasta pronto

















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida