Está en la página 1de 2

Juan Manuel Felipe Martínez 1-19-2425

1. Hacer un procedimiento almacenado que reciba un string XML, actualice la tabla


de cuenta (10)
CREATE TABLE [dbo].[clientes](
[codigocliente] [int],
[nombrecli] [varchar](50),
[fechaingreso] [datetime],
CONSTRAINT [PK_clientes] PRIMARY KEY CLUSTERED
(
[codigocliente] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]

---------------------------------

CREATE PROCEDURE InserteCliente


@vParam XML
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO dbo.clientes


SELECT
cliente.value('(codigocliente/text())[1]','int') AS Id,
cliente.value('(nombrecli/text())[1]','varchar(50)') AS Name,
cliente.value('(vehicle_launch_year/text())[1]','datetime') AS LaunchYear
FROM
@vParam.nodes('/clientes/cliente')AS TEMPTABLE(cliente)

END
GO

---------------------------------

USE miprimerdb
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[InserteCliente]


@vParam = N'<clientes>
<cliente>
<codigocliente>1</codigocliente>
<nombrecli>María Román</nombrecli>
<fechaingreso>2019-08-13T00:00:00</fechaingreso>
</cliente>
<cliente>
<codigocliente>2</codigocliente>
<nombrecli>José de la Rosa</nombrecli>
<fechaingreso>2020-05-04T00:00:00</fechaingreso>
</cliente>
<cliente>
<codigocliente>3</codigocliente>
<nombrecli>Carlos Perez</nombrecli>
<fechaingreso>1894-07-15T00:00:00</fechaingreso>
</cliente>
</clientes>'

SELECT 'Return Value' = @return_value

GO

2. Presentar CodigoCliente,NombreCliente, Balance a la fecha 31/05/2019.(5)


SELECT cli.codigocliente, cli.nombrecli
from clientes cli, movimientos movi, cuentas cue
WHERE cli.codigocliente = cue.codigocliente
AND cue.codigocuenta = movi.codigocuenta
order by movi.fecha <= '2019-05-31 00:00:00'

order by movi.fecha ASC

3. Datos de la(s) cuenta(s) con mayor balance;(5)


SELECT cuen.nombrecu, cuen.codigocuenta, movi.monto
FROM cuentas cuen, movimientos movi
WHERE cuen.codigocuenta= movi.codigocuenta
AND movi.monto >= 5000
order by movi.monto desc;

4. Cancelar todas las cuentas que no posee movimientos. (5)


SET SQL_SAFE_UPDATES = 0;
UPDATE cuentas SET estado = 0 WHERE NOT EXISTS (SELECT 1 FROM movimientos
WHERE cuentas.codigocuenta=cuentas.codigocuenta)

5. Presentar todas las cuentas que contenga el string “transito”, del cliente que
ingresaron este año y que contengan movimientos >5,000.00. (5)
SELECT cuen.* FROM cuentas cuen, clientes cli, movimientos movi WHERE
Upper(cuen.nombrecu)= Upper('transito')
AND cuen.codigocliente =cli.codigocliente
AND cuen.codigocliente = movi.codigocuenta
and year(cli.fechaingreso)= YEAR(SYSDATETIME())
and movi.monto>5000.00;

También podría gustarte