--
***CREAR UNA TABLA
use [dnndev.me]
CREATE TABLE rec_dat_user(
UserID INT NOT NULL,
edad VARCHAR(250) NULL,
tip_doc VARCHAR(250) NULL,
n_doc VARCHAR(250) NULL,
sex VARCHAR(250) NULL,
telefono VARCHAR(250) NULL,
idioma VARCHAR(250) NULL,
cp VARCHAR(250) NULL,
direccion VARCHAR(250) NULL,
localidad VARCHAR(250) NULL,
pais VARCHAR(250) NULL,
provincia VARCHAR(250) NULL,
c_domicilio VARCHAR(250) NULL,
c_poblacion VARCHAR(250) NULL,
c_pais VARCHAR(250) NULL,
c_cod_iban VARCHAR(250) NULL,
CONSTRAINT PK_USERID PRIMARY KEY(UserId),
CONSTRAINT FK__DAT_USER FOREIGN KEY(UserID) REFERENCES Users(UserId)
)
_______________________
**********COMANDOS BÁSICOS
insert into rec_dat_user (UserId) values (58)
DELETE from rec_dat_user where UserId= 58
UPDATE rec_dat_user SET telefono ='' WHERE UserId=58
********************
CREAR UN INDICE
use personas
CREATE UNIQUE NONCLUSTERED INDEX U_ID1 ON prueba(fila1)
Nombre del indice ON table(campo)
CREATE INDEX
*************
MODIFICAR INDICE
alter table Palabras add
constraint PK_Palabras primary key clustered (IdPagina, Orden)
GO
_____________
****EJEMPLO DE JOIN
--Obtiene gestor especialista asignado a esa reclamación
SELECT FirstName + ' '+ LastName + '|'+ CONVERT(VARCHAR(250), u.UserId) AS Gestor
FROM Users u
INNER JOIN rec_esp_asignado a
ON u.UserId=a.UserId
WHERE a.ReclamaId=@hd_id_reclamacion AND a.Asignado=1
***************EJECUTAR FUNCION, (también con select tras introducir el valor en una variable es posible)
EXEC rec_Actualizar_usuario [NewUserId], '[Telefono]', '[FirstName]', '[LastName]'
________________
***************CREAR UNA FUNCION
CREATE FUNCTION [dbo].[rec_sum_hora](@hora1 as time,@hora2 as time)
RETURNS time
AS
BEGIN
DECLARE @dtsuma AS datetime,
@tsuma AS time,
@horas AS numeric,
@minutos AS numeric,
@segundos AS numeric
set @horas = DATEPART(hour,@hora2)
set @minutos = DATEPART(minute,@hora2)
set @segundos = DATEPART(second,@hora2)
set @dtsuma = DATEADD(hour,@horas,@hora1)
set @dtsuma = DATEADD(minute,@minutos,@dtsuma)
set @dtsuma = DATEADD(second,@segundos,@dtsuma)
set @tsuma = CONVERT(time,@dtsuma)
RETURN @tsuma
END
**************** CREAR PROCEDIMENTO
CREATE PROCEDURE [dbo].[rec_act_gestion_update_rbp](
@ReclamacId BIGINT
,@tip VARCHAR(10)
,@indemnizacion VARCHAR(150)
,@txtbp_importe VARCHAR(150)
,@txtbp_canjea_acciones VARCHAR(150)
,@txtbp_test_idonei VARCHAR(150)
,@txtbp_estudi VARCHAR(150)
,@txtbp_profesion VARCHAR(150)
,@txtbp_inv_otros_prod VARCHAR(150)
,@txtbp_otro_tipo VARCHAR(150)
)
AS
IF ISNUMERIC(@ReclamacId)!=''
BEGIN
UPDATE rec_dat_client SET
indemnizacion=@indemnizacion
WHERE ReclamacId =@ReclamacId
IF @tip ='rbp'
BEGIN
IF EXISTS(SELECT ReclamacId FROM rec_dat_client_rbp WHERE ReclamacId =@ReclamacId )
UPDATE rec_dat_client_rbp SET
importe=@txtbp_importe
,canjea_acciones=@txtbp_canjea_acciones
,test_idonei=@txtbp_test_idonei
,estudi=@txtbp_estudi
,profesion=@txtbp_profesion
,inv_otros_prod=@txtbp_inv_otros_prod
,otro_tipo=@txtbp_otro_tipo
WHERE ReclamacId =@ReclamacId
END
END
________________OTRO EJEMPLO DE PROCEDIMENTO
ALTER PROCEDURE dbo.rec_AsignarGestor(@UserId int,@ReclamaId bigint,@MENSAJE VARCHAR(100) OUTPUT)
AS
BEGIN
--SI NO ES EL ACTUAL GESTOR
IF NOT EXISTS (SELECT Asignado FROM rec_esp_asignado WHERE (ReclamaId =@ReclamaId AND UserId=@UserId AND Asignado=1))
BEGIN
DECLARE @Fecha_act AS DATETIME=(SELECT[dbo].[rec_sum_hora](GETDATE(),'01:00'))
--BUSCAMOS EL ACTUAL GESTOR
DECLARE @GestorActual INT=(SELECT UserId FROM rec_esp_asignado WHERE (ReclamaId =@ReclamaId AND Asignado=1))
--LO DESASINAMOS COMO GESTOR Y LE PONEMOS FECHA FIN GESTIÓN
UPDATE rec_esp_asignado SET Asignado=0, fecha_fin=@Fecha_act
WHERE UserId=@GestorActual AND ReclamaId =@ReclamaId AND Asignado=1
--INSERTAMOS NUEVO GESTOR CON SU FECHA DE INCIO GESTIÓN
IF @UserId IS NOT NULL AND @ReclamaId IS NOT NULL
BEGIN
DECLARE @Actul_asignado BIT
INSERT INTO rec_esp_asignado (UserId,ReclamaId,Fecha_ini,Asignado)
VALUES(@UserId,@ReclamaId,@Fecha_act,1)
END
SET @MENSAJE= 'USUARIO ASIGNADO CORRECTAMENTE'
END
ELSE
BEGIN
SET @MENSAJE='YA ERA EL USUARIO ASIGNADO'
END
END
GO
****************EJEMPLO PROCEDIMENTO CON PARAMETROS SALIDA
ALTER PROCEDURE dbo.rec_AsignarGestor(@UserId int,@ReclamaId bigint,@MENSAJE VARCHAR(100) OUTPUT)
AS
BEGIN
--SI NO ES EL ACTUAL GESTOR
IF NOT EXISTS (SELECT Asignado FROM rec_esp_asignado WHERE (ReclamaId =@ReclamaId AND UserId=@UserId AND Asignado=1))
BEGIN
DECLARE @Fecha_act AS DATETIME=(SELECT[dbo].[rec_sum_hora](GETDATE(),'01:00'))
--BUSCAMOS EL ACTUAL GESTOR
DECLARE @GestorActual INT=(SELECT UserId FROM rec_esp_asignado WHERE (ReclamaId =@ReclamaId AND Asignado=1))
--LO DESASINAMOS COMO GESTOR Y LE PONEMOS FECHA FIN GESTIÓN
UPDATE rec_esp_asignado SET Asignado=0, fecha_fin=@Fecha_act
WHERE UserId=@GestorActual AND ReclamaId =@ReclamaId AND Asignado=1
--INSERTAMOS NUEVO GESTOR CON SU FECHA DE INCIO GESTIÓN
IF @UserId IS NOT NULL AND @ReclamaId IS NOT NULL
BEGIN
DECLARE @Actul_asignado BIT
INSERT INTO rec_esp_asignado (UserId,ReclamaId,Fecha_ini,Asignado)
VALUES(@UserId,@ReclamaId,@Fecha_act,1)
END
SET @MENSAJE= 'USUARIO ASIGNADO CORRECTAMENTE'
END
ELSE
BEGIN
SET @MENSAJE='YA ERA EL USUARIO ASIGNADO'
END
END
GO
________________LLAMADA PROCEDIMENTOS
DECLARE @MENSAJE VARCHAR(100)
EXECUTE dbo.[rec_AsignarGestor] '70','687',@MENSAJE OUTPUT
SELECT @MENSAJE
_________________VISTA
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO
_________________TRIGGER
- Cremamos un Trigger sobre la tabla expedientes
CREATE TRIGGER StatusChangeDateTrigger
ON expedientes
AFTER UPDATE AS
-- ¿Ha cambiado el estado?
IF UPDATE(state)
BEGIN
-- Actualizamos el campo stateChangedDate a la fecha/hora actual
UPDATE expedientes SET stateChangedDate=GetDate() WHERE code=(SELECT code FROM inserted);
-- A modo de auditoría, añadimos un registro en la tabla expStatusHistory
INSERT INTO expStatusHistory (code, state) (SELECT code, state FROM deleted WHERE code=deleted.code);
-- La tabla deleted contiene información sobre los valores ANTIGUOS mientras que la tabla inserted contiene los NUEVOS valores.
-- Ambas tablas son virtuales y tienen la misma estructura que la tabla a la que se asocia el Trigger.
END;
_________________EJEMPLO UNION
Para unir dos tablas con los mismo campos o similares, coloca la cabecera de la primera SELECT e inserta todos los datos de las dos tablas como si fuera una
Select Col1, Col2, Col3, Col4, Col5 from Table1
Union
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
_____________________
No hay comentarios :
Publicar un comentario