Professional Documents
Culture Documents
Visual Studio 2008 La integracin entre SQL Server y Visual Studio 2008 es profunda en muchos aspectos. De hecho, SQL Server 2008 instala una versin reducida de Visual Studio 2008 llamada
Pgina 1
Al crear el proyecto, Visual Studio nos pedir que seleccionemos una referencia a una conexin de base de datos. Debido a que Visual Studio proporciona implementacin automatizada de los ensamblados en SQL Server, debe asociar una conexin a un servidor de base de datos determinado.
Pgina 2
Seleccionaremos la conexin con la Base de datos BDTRABAJO. Luego agregaremos un nuevo elemento de tipo Stored Procedure.
Pgina 3
Partial Public Class StoredProcedures <Microsoft.SqlServer.Server.SqlProcedure()> _ Public Shared Sub ListarProductos() ' Creamos la Conexion utilizando el contexto actual Dim cnx As New SqlConnection("context connection=true") ' Creamos el comando que contiene la consulta Dim cmd As New SqlCommand("Select Cod_Prod,Nom_Prod,Pre_Prod From Productos", cnx) ' Abrimos la conexion cnx.Open() ' Ejecutamos el comando y devolvemos las filas en el formato de SqlDataReader Dim lector As SqlDataReader = cmd.ExecuteReader ' Enviamos los resultados al Servidor SqlContext.Pipe.Send(lector) lector.Close() cnx.Close() End Sub End Class Y en un archivo de consulta podremos ejecutar: use BDTRABAJO go Exec dbo.ListarProductos go
Crearemos ahora un nuevo archivo de tipo Procedimiento almacenado al cual denominaremos: ListarClientesPais.vb
Pgina 4
Este archivo nos permitir listar los distintos clientes de acuerdo al nombre de un Pas enviado como parmetro. Todo el cdigo del archivo muestra a continuacin: Imports Imports Imports Imports Imports Imports System System.Data.Sql System.Data System.Data.SqlClient System.Data.SqlTypes Microsoft.SqlServer.Server
Partial Public Class StoredProcedures <Microsoft.SqlServer.Server.SqlProcedure()> _ Public Shared Sub ListarClientesPais(ByVal NomPais As String) ' Creamos la Conexion utilizando el contexto actual Dim cnx As New SqlConnection("context connection=true") ' Creamos el comando que contiene la consulta Dim cmd As New SqlCommand("Select Cod_Cli,Nom_Cli,Pais From Clientes Where Pais=@NomPais", cnx) ' Creamos el parametro que necesita cmd.Parameters.Add("@NomPais", SqlDbType.VarChar, 20).Value = NomPais ' Abrimos la conexion cnx.Open() ' Ejecutamos el comando y devolvemos las filas en el formato de SqlDataReader Dim lector As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) ' Enviamos los resultados al Servidor SqlContext.Pipe.Send("Se ejecut el Proc. Almacenado <ListaClientesPais>") SqlContext.Pipe.Send(lector) lector.Close() End Sub End Class
Pgina 5
Digitaremos el siguiente codigo: Imports Imports Imports Imports Imports System System.Data System.Data.SqlClient System.Data.SqlTypes Microsoft.SqlServer.Server
Partial Public Class Triggers ' Introduzca la tabla o vista existente del destino y elimine la marca de comentario de la lnea de atributos ' <Microsoft.SqlServer.Server.SqlTrigger(Name:="TR_NO_INSERTA_CLIENTES", Target:="Table1", Event:="FOR UPDATE")> _ Public Shared Sub TR_NO_INSERTA_CLIENTES() Dim cnx As New SqlConnection("context connection=true") Dim cadsql As String = "Select count(*) From Inserted" Dim cmd As New SqlCommand(cadsql, cnx) cnx.Open() Dim num As Integer = Convert.ToInt32(cmd.ExecuteScalar) If num > 0 Then Dim p As SqlPipe = SqlContext.Pipe cmd.CommandText = "RAISERROR('No se Permite Insertar Nuevos Registros',14,1)" 'Enviando el Error Try p.ExecuteAndSend(cmd) Catch ex As Exception End Try 'Cancelando la Operacion System.Transactions.Transaction.Current.Rollback() End If End Sub End Class
Pgina 6
Pgina 7