domingo, 21 de agosto de 2011
Reglas de Normalización
Explicación del modelo Entidad-Relacion, modelo relacional y las reglas de normalización
sábado, 20 de agosto de 2011
VB.NET ADO: Uso del COMMAND para llamar un Procedimiento Almacenado
Imports System.Data Imports System.Data.SqlClient Public Class InsertarCliente Dim cn As New SqlConnection Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try cn.ConnectionString = "Data source=visoal76;" & _ "Initial Catalog=Northwind; Integrated Security=True" cn.Open() Dim cmd As New SqlCommand("Insert_customers", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@CustomerID", SqlDbType.NChar).Value = TxtCustomerid.Text cmd.Parameters.Add("@companyname", SqlDbType.NVarChar) cmd.Parameters.Add("@contactname", SqlDbType.NVarChar) cmd.Parameters.Add("@contacttitle", SqlDbType.NVarChar) cmd.Parameters.Add("@Address", SqlDbType.NVarChar) cmd.Parameters.Add("@City", SqlDbType.NVarChar) cmd.Parameters.Add("@Region", SqlDbType.NVarChar) cmd.Parameters.Add("@PostalCode", SqlDbType.NVarChar) cmd.Parameters.Add("@Country", SqlDbType.NVarChar) cmd.Parameters.Add("@Phone", SqlDbType.NVarChar) cmd.Parameters.Add("@Fax", SqlDbType.NVarChar) cmd.Parameters("@customerid").Value = TxtCustomerid.Text cmd.Parameters("@companyname").Value = TxtCompanyname.Text cmd.Parameters("@contactname").Value = TxtContactName.Text cmd.Parameters("@contacttitle").Value = TxtContactTitle.Text cmd.Parameters("@Address").Value = TxtAddress.Text cmd.Parameters("@City").Value = TxtCity.Text cmd.Parameters("@Region").Value = TxtRegion.Text cmd.Parameters("@PostalCode").Value = TxtPostalCode.Text cmd.Parameters("@Country").Value = TxtCountry.Text cmd.Parameters("@Phone").Value = TxtPhone.Text cmd.Parameters("@Fax").Value = TxtFax.Text cmd.ExecuteNonQuery() MessageBox.Show("Dato Insertado Correctamente") Call Limpiar() cn.Close() Catch xcpSQL As SqlException MessageBox.Show("Mensaje: " & xcpSQL.Message.ToString & " Numero: " & xcpSQL.Number) Catch xcpSQL As Exception MessageBox.Show("Error de aplicacion") End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call Limpiar() End Sub Private Sub Limpiar() For Each ocontrol As Control In Me.Controls If TypeOf ocontrol Is TextBox Then ocontrol.Text = "" End If Next End Sub End Class |
martes, 16 de agosto de 2011
sábado, 13 de agosto de 2011
SCRIPT: Creación de Procedimientos Almacenados
--1. Crea un procedimiento en la base de datos Activa
USE NORTHWIND
GO
CREATE PROC DBO.ORDENESNOENTREGADAS
AS
SELECT * FROM ORDERS WHERE ORDERDATE
BETWEEN '1996-01-01' AND '1996-31-12'
--2.Información de Procedimientos
EXEC SP_HELP ORDENESNOENTREGADAS
EXEC SP_DEPENDS ORDENESNOENTREGADAS
EXEC SP_HELPTEXT ORDENESNOENTREGADAS
EXEC SP_STORED_PROCEDURES
SELECT * FROM SYSOBJECTS
SELECT * FROM SYSCOMMENTS
SELECT * FROM SYSDEPENDS
--3.Ejecucion de un procedimiento
EXEC ORDENESNOENTREGADAS
sp_executesql ORDENESNOENTREGADAS --USAR SP_EXECUTESQL ES MAS OPTIMO PORQUE GENERA PLANES DE EJECUCION DINAMICAMENTE
EXEC ORDENESNOENTREGADAS WITH RECOMPILE --EXIGE QUE SE RECOMPILE UN NUEVO PLAN
--4.Agregar datos con Insert Into partiendo del resultado del procedimiento
CREATE TABLE [PEDIDOS96]
(
[OrderID] [int] NOT NULL ,
[CustomerID] [nchar] (5) ,
[EmployeeID] [int] NULL ,
[OrderDate] [datetime] NULL ,
[RequiredDate] [datetime] NULL ,
[ShippedDate] [datetime] NULL ,
[ShipVia] [int] NULL ,
[Freight] [money] NULL DEFAULT (0),
[ShipName] [nvarchar] (40) NULL ,
[ShipAddress] [nvarchar] (60) NULL ,
[ShipCity] [nvarchar] (15) NULL ,
[ShipRegion] [nvarchar] (15) NULL ,
[ShipPostalCode] [nvarchar] (10) NULL ,
[ShipCountry] [nvarchar] (15) NULL ,
)
ON [PRIMARY]
GO
INSERT INTO PEDIDOS96
EXEC ORDENESNOENTREGADAS
Select into
--5. Modificar el procedimiento almacenado
ALTER PROC DBO.ORDENESNOENTREGADAS
AS
SELECT * FROM ORDERS WHERE ORDERDATE
BETWEEN '1998-01-01' AND '1998-31-12'
--6.Para eliminar el procedimiento almacenado en la base de datos activa
DROP PROC DBO.ORDENESNOENTREGADAS
--7. Parametros de Entrada
CREATE Proc Insercion
@Tabla1 bit,@compañia varchar(50),@contacto varchar(50)
,@titulo varchar(50),@direccion varchar(50)
as
DECLARE @codigo varchar(50)
SET @codigo=substring(convert(varchar(10),rand()),3,5)
if @Tabla1=1
begin
insert suppliers (companyname,contactname,contacttitle,address)
values
(@compañia,@contacto,@titulo,@direccion)
end
else
begin
insert customers (customerid,companyname,contactname,contacttitle,address)
values
(@codigo,@compañia,@contacto,@titulo,@direccion)
end
--8. Ejecucion con Parametros de entrada
exec insercion
@compañia='cardenas inc',@contacto='Luis',@titulo='Ing',@direccion='18calle 1-6 Z.1'
exec Insercion 0,'cardenas inc9','Victor Cardenas','Ing.','30av 23-56 Z.5'
--9.Recompilar un procedimiento Y ESTABLECER ERRORES
ALTER PROC TESTRECOMPILACION
@VALOR INT
WITH RECOMPILE
AS
DECLARE @STRING VARCHAR(200)
SET @STRING='SELECT TOP '+ CONVERT(CHAR(1),@VALOR) + ' * FROM ORDERS ORDER BY ORDERID'
EXECUTE (@STRING)
IF @@ERROR<>0
BEGIN
PRINT 'EQUIVOCACION AL INGRESAR MAS DE UN PARAMETRO EN PARAMETRO DE ENTRADA'
END
--10.RECOMPILAR EL PROCEDIMEINTO
EXEC TESTRECOMPILACION 8 WITH RECOMPILE
--11.PROCEDIMIENTO SP_RECOMPILE
SP_RECOMPILE TESTRECOMPILACION
DBCC FREEPROCCACHE --Borra de la cache todos los planes de ejecucion
--12. Parametros de Salida
create Proc Salida
@pais varchar(50),
@valor1 int OUTPUT
as
Select * from customers where country=@pais
set @valor1=@@rowcount
DECLARE @TEST1 INT
exec salida 'Argentina',@TEST1
SELECT @TEST1
--13. Procedimientos extendidos
Use Master
go
EXEC master.dbo.xp_cmdshell 'dir c:\ '
EXEC master.dbo.sp_helptext xp_cmdshell --buscar el dll que realiza la funcion
--14. Escribir un mensaje de error
EXEC sp_addmessage
@msgnum = 50010,
@severity = 10,
@lang= 'us_english',
@msgtext = 'Solo se permite un digito',
@with_log = 'true'
exec sp_dropmessage 50010,'us_english'
use master
select * from sysmessages
sp_helptext sp_dropmessage
--15. Usar @@Error
ALTER PROC TESTRECOMPILACION
@VALOR INT
WITH RECOMPILE
AS
DECLARE @STRING VARCHAR(200)
SET @STRING='SELECT TOP '+ CONVERT(CHAR(1),@VALOR) + ' * FROM ORDERS ORDER BY ORDERID'
EXECUTE (@STRING)
IF @@ERROR<>0
BEGIN
PRINT 'EQUIVOCACION AL INGRESAR MAS DE UN PARAMETRO EN PARAMETRO DE ENTRADA'
END
--16. usar el error con raiseeror
ALTER PROC TESTRECOMPILACION
@VALOR INT
WITH RECOMPILE
AS
DECLARE @STRING VARCHAR(200)
SET @STRING='SELECT TOP '+ CONVERT(CHAR(1),@VALOR) + ' * FROM ORDERS ORDER BY ORDERID'
EXECUTE (@STRING)
IF @@ERROR<>0
BEGIN
RAISERROR(50010, 16, 1)
END
exec testrecompilacion 88
--17. borrar de caché todos lo planes de ejecucion
DBCC FREEPROCCACHE
---uso del Return
use pubs
go
CREATE PROCEDURE checkstate @param varchar(11)
AS
IF (SELECT state FROM authors WHERE au_id = @param) = 'CA'
RETURN 1
ELSE
RETURN 2
--revision del resultado
declare @rev int
exec @rev=checkstate '238-95-7766'
if @rev=1
begin
print 'bien'
end
else
begin
print 'mal'
Suscribirse a:
Entradas (Atom)