1 . Ejecutando un Simple Procedimiento Almacenado
Para esto antes que nada debemos tener un SP (Stored Procedure) creado
CREATE PROCEDURE spEjecutar
AS
BEGIN
/* Mi Codigo */
END
GO
Para llamar o ejecutar este SP en .NET solo necesitamos el siguiente código:
Dim objCommand As New SqlClient.SqlCommand("spEjecutar"), _
Conexion As String = "server='SERVIDOR'; user id='usuario'; password='miclave'; database='MiBaseDatos'"
objCommand.CommandType = CommandType.StoredProcedure
objCommand.Connection = New SqlClient.SqlConnection(Conexion)
objCommand.Connection.Open()
objCommand.ExecuteNonQuery()
objCommand.Connection.Close()
2. Ejecutando un SP con parámetros que devuelva un conjunto de datos
Aquí tenemos dos opciones, dejar este conjunto de datos en un objeto SqlDataReader o un SqlDataAdapter, la diferencia principalmente es que SqlDataReader es que solo se puede leer hacia adelante y está conectada con la base de datos, en cambio SqlDataAdapter sirve para intercambiar datos entre la Base de Datos y un conjunto de datos (DataSet o DataTable)
Antes que nada creemos un Procedimiento Almacenado que reciba un parámetro y devuelva un conjunto de datos.
CREATE PROCEDURE spEjecutar
@Codigo VARCHAR(10)
AS
BEGIN
SELECT Codigo, Nombre
FROM Tabla
WHERE Codigo = @Codigo
END
GO
Para llamar este SP desde .NET a un SqlDataReader
Dim objCommand As New SqlClient.SqlCommand("spEjecutar"), _
Conexion As String = "server='SERVIDOR'; user id='usuario'; password='miclave'; database='MiBaseDatos'"
objCommand.CommandType = CommandType.StoredProcedure
objCommand.Parameters.Add("@Codigo", SqlDbType.VarChar, 10)
objCommand.Parameters("@Codigo").Value = "Mi Código"
objCommand.Connection = New SqlClient.SqlConnection(Conexion)
objCommand.Connection.Open()
Dim objReader As SqlDataReader = objCommand.ExecuteReader()
While objReader.Read()
Response.Write(objReader.Item("Codigo").ToString() & "-" & _
objReader.Item("Nombre").ToString() & "<br>")
End While
objReader.Close()
objCommand.Connection.Close()
Para llamar este SP desde .NET a un SqlDataAdapter a un DataSet
Dim objCommand As New SqlClient.SqlCommand("spEjecutar"), _
Conexion As String = "server='SERVIDOR'; user id='usuario'; password='miclave'; database='MiBaseDatos'"
objCommand.CommandType = CommandType.StoredProcedure
objCommand.Parameters.Add("@Codigo", SqlDbType.VarChar, 10)
objCommand.Parameters("@Codigo").Value = "Mi Código"
objCommand.Connection = New SqlClient.SqlConnection(Conexion)
objCommand.Connection.Open()
Dim objAdapter As New SqlDataAdapter(objCommand), _
objDataSet As New DataSet
objAdapter.Fill(objDataSet, "Tabla")
objCommand.Connection.Close()
Dim objRow As DataRow
For Each objRow In objDataSet.Tables("Tabla").Rows
Response.Write(objRow.Item("Codigo").ToString() & "-" & _
objRow.Item("Nombre").ToString() & "<br>")
Next
Para llamar este SP desde .NET a un SqlDataAdapter a un DataTable
Dim objCommand As New SqlClient.SqlCommand("spEjecutar"), _
Conexion As String = "server='SERVIDOR'; user id='usuario'; password='miclave'; database='MiBaseDatos'"
objCommand.CommandType = CommandType.StoredProcedure
objCommand.Parameters.Add("@Codigo", SqlDbType.VarChar, 10)
objCommand.Parameters("@Codigo").Value = "Mi Código"
objCommand.Connection = New SqlClient.SqlConnection(Conexion)
objCommand.Connection.Open()
Dim objAdapter As New SqlDataAdapter(objCommand), _
objDataTable As New DataTable
objAdapter.Fill(objDataTable)
objCommand.Connection.Close()
Dim objRow As DataRow
For Each objRow In objDataTable.Rows
Response.Write(objRow.Item("Codigo").ToString() & "-" & _
objRow.Item("Nombre").ToString() & "<br>")
Next
3. Ejecutando un SP con parámetros que devuelva un parámetro de Salida.
Para este caso tenemos el siguiente Procedimiento Almacenado con 2 parámetros uno de entrada y otro de salida.
CREATE PROCEDURE spEjecutar
@Codigo VARCHAR(10),
@Nombre VARCHAR(100) OUT
AS
BEGIN
SELECT @Nombre = Nombre
FROM Tabla
WHERE Codigo = @Codigo
END
GO
Para llamar este SP y obtener el resultado en el parámetro de salida desde .NET se debe realizar lo siguiente:
Dim objCommand As New SqlClient.SqlCommand("spEjecutar"), _
Conexion As String = "server='SERVIDOR'; user id='usuario'; password='miclave'; database='MiBaseDatos'"
objCommand.CommandType = CommandType.StoredProcedure
objCommand.Parameters.Add("@Codigo", SqlDbType.VarChar, 10)
objCommand.Parameters("@Codigo").Value = "Mi Código"
objCommand.Parameters.Add("@Nombre", SqlDbType.VarChar, 100)
objCommand.Parameters("@Nombre").Direction = ParameterDirection.Output
objCommand.Connection = New SqlClient.SqlConnection(Conexion)
objCommand.Connection.Open()
objCommand.ExecuteScalar()
Response.Write("El Nombre es: " & objCommand.Parameters("@Nombre").Value)
objCommand.Connection.Close()
No hay comentarios:
Publicar un comentario