Red de conocimiento informático - Problemas con los teléfonos móviles - Programación, escritura y llamada de procedimientos almacenados en T-SQL

Programación, escritura y llamada de procedimientos almacenados en T-SQL

Uno completo.

Eche un vistazo, use master

go

--Crear base de datos

si existe (seleccione * de sysdatabases donde nombre = 'bankDB')

eliminar base de datos bankDB

go

crear base de datos bankDB

on

(

nombre = 'bankDB ',

nombre de archivo = 'e:\bankDB.mdf',

tamaño = 3 MB,

crecimiento del archivo = 20%

)

gouse bankDB

go

--Crear tabla UserInfo

si existe (seleccione * de sysobjects donde nombre = 'UserInfo')

soltar tabla UserInfo

ir

crear tabla UserInfo

(

customerID int identidad(1,1 ) no nulo,

nombre del cliente varchar(16) no nulo,

PID varchar(20) no nulo,

teléfono varchar(15) no nulo,

dirección varchar(225)

)

tabla goalter UserInfo

agregar restricción PK_customerID clave principal (customerID),

restricción UQ_PID única (PID),

restricción CK_PID check((len(PID)=15) o (len(PID)=18)),

restricción CK_telephone check( len(teléfono) entre 11 y 13)--(teléfono como '[0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]') o (teléfono como '[0-9][0-9][0-9][0-9][-] [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')o (teléfono como '[0- 9][0-9][0-9][-][0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9]'))

vaya a insertar en Información de usuario(nombre del cliente,PID,teléfono,dirección)

seleccione 'Zhang San','123456789012345','010-67898978', Unión 'Beijing Haidian'

select '李思','321245678912345678','0478-44443333',null

go--Crear tabla cardInfo

if existe (seleccione * de sysobjects donde nombre = 'cardInfo')

soltar tabla cardInfo

go

>

crear tabla cardInfo

(

cardID varchar(19) no nulo,

curType varchar(10) no nulo,

saveType varchar(10) no nulo,

openDate datetime no nulo,

dinero openMoney no nulo,

saldo de dinero no nulo,

pase varchar(12) no nulo,

IsReportLoss varchar(2) no nulo,

customerID int no nulo

)

tabla de porteros cardInfo

agregar restricción PK_cardID clave primaria (cardID),

restricción CK_cardID check(cardID like ('1010[ ]3576[ ][0-9][0- 9][0-9][0-9][ ][0-9][0-9][0-9][0-9]')),

restricción DF_curType default(' RMB') para curType,

restricción CK_servedType check( SavingType in('current','fixed-term','regular')),

restricción DF_openDate default(getdate() ) para openDate,

restricción CK_openMoney check(openMoney>=1),

restricción CK_balance check(balance>=1),

restricción DF_pass default( ' 888888') para pasar,

restricción CK_IsReportLoss check(IsReportLoss in('yes','no')),

restricción DF_IsReportLoss default('no') para IsReportLoss,

p>

restricción FK_customerID clave externa (customerID) hace referencia a UserInfo(customerID)

goinsert into cardInfo(cardID, SavingType,openMoney,balance,customerID)

seleccione '1010 3576 1234 5678','current',1000,1000,1 union

select '1010 3576 1212 1134','term',1,1,2

go--Crear tabla transInfo

si existe (seleccione * de sysobjects donde nombre = 'transInfo')

soltar tabla transInfo

ir

crear tabla transInfo

(

transDate fecha y hora no nu

ll,

cardID varchar(19) no nulo,

transType varchar(4) no nulo,

dinero transMoney no nulo,

comentario varchar(225)

)

tabla de goalter transInfo

agregar restricción DF_transDate default(getDate()) para transDate,

restricción FK_cardID clave externa(cardID) hace referencia a cardInfo(cardID),

restricción CK_transType check(transType in('deposit','withdraw')),

restricción CK_transMoney check(transMoney > 0)

goinsert into transInfo(cardID,transType,transMoney)

values('1010 3576 1234 5678','Withdrawal',900)

actualizar cardInfo establecer saldo=saldo-900 donde cardID='1010 3576 1234 5678'

insertar en transInfo(cardID,transType,transMoney)

values('1010 3576 1212 1134',' Depósito ',5000)

actualizar cardInfo establecer saldo=saldo+5000 donde cardID='1010 3576 1212 1134'

ir/*---------- -- ----Simulación empresarial general-------------*/

--Zhang San cambia la contraseña del número de tarjeta

actualizar cardInfo set pass = '123456' donde cardID='1010 3576 1234 5678'

actualizar cardInfo set pass='123123' donde cardID='1010 3576 1212 1134'

ir

--Reportar pérdida de tarjeta bancaria Li Si

actualizar cardInfo set IsReportLoss='Yes' donde cardID='1010 3576 1212 1134'

go

- - Estadísticas del saldo de circulación de capital del banco y liquidación de ganancias

declare @inMoney dinero,@outMoney dinero

seleccione @inMoney=sum(transMoney) de transInfo donde transType='deposit'< / p>

seleccione @outMoney=sum(transMoney) de transInfo donde transType='Withdrawal'

print 'La cantidad circulante es: '+convert(varchar(10),@inMoney)+' RMB'

print 'La liquidación del retiro es:'+convert(varchar(10),@outMoney)+'RMB'

print 'La cantidad total de circulación bancaria es:' +con

vert(varchar(10),(@inMoney-@outMoney))+'RMB'

go

--Consulta a los usuarios que abrieron cuentas este mes y muestra la información relevante de la tarjeta

seleccione número de tarjeta=cardInfo.cardID,

Número de tarjeta contraseña=contraseña,

Nombre de cliente=nombre de cliente,

Cliente Número de identificación= PID,

Teléfono=teléfono,

Dirección=dirección,

Tipo de depósito=Tipo de ahorro,

Monto de apertura de cuenta= openMoney,

p>

Saldo=saldo,

Moneda=curType,

Fecha de apertura de cuenta=openDate

de UserInfo

tarjeta de unión interna en UserInfo.customerID=cardInfo.customerID

transInfo de unión interna en cardInfo.cardID=transInfo.cardID

--Consulta esta semana

donde openDate entre (select dateadd(dd,-datepart(dw,getdate())+1,getdate())) y (select getdate())

go

--select getdate()

--select dateadd(dd,-datepart(dw,getdate())+1,getdate())

--select datepart(dw, getdate())

--select dateiff(dd,(select dateadd(dd,-datepart(dw,getdate())+1,getdate())),getdate())

--Consultar información del cliente para una cuenta perdida reportada

seleccione nombre del cliente=nombre del cliente,

número de teléfono=teléfono

de Información del usuario

donde ID de cliente = (seleccione ID de cliente de cardInfo donde IsReportLoss = 'Sí')

ir

--Servicio de recordatorio de reclamaciones

seleccione nombre de cliente = nombre de cliente,

Número de contacto=teléfono,

Saldo de cuenta=saldo

desde UserInfo interno unirse cardInfo en UserInfo.customerID=cardInfo.customerID

donde saldo<=200

ir

--Crear proceso de almacenamiento

--Zhang San retira dinero

establecer sin cuenta

si existe (seleccione * de sysobjects donde nombre ='proc_takeMoney')

eliminar el procedimiento proc_takeMoney

ir

crear el procedimiento proc_takeMoney

@card varchar (19),

@m dinero,

@type varch

ar(4),

@inputPass varchar(6)=''

como

comenzar la transacción

declarar @errorsum int - -Definir acumulación de errores

set @errorsum=0

print 'La transacción está en progreso, por favor espera...'

declara @balance dinero

seleccione @saldo=saldo de cardInfo donde cardID=@tarjeta

actualice cardInfo establezca @saldo=@saldo-@m

donde cardID=@tarjeta y pase= @ inputPass

set @errorsum=@errorsum+@@error

if (@errorsum<>0)

comenzar

revertir transacción

print'¡El retiro falló! Después del retiro, el saldo de la tarjeta debe ser superior a 1 yuan. El saldo es insuficiente...'

print'Número de tarjeta:'+@card+' '+'Saldo:'+convert(varchar). (10),(@balance+@ m))

fin

else

comienzo

si @balance>=1 -- Si el saldo después del retiro sigue siendo mayor que 1, entonces el retiro se realizó correctamente

comenzar

confirmar la transacción

print '¡El retiro se realizó correctamente! '

insertar en transInfo(cardID,transType,transMoney)

valores(@card,@type,@m)

imprimir'Número de tarjeta:'+ @ tarjeta+' '+'Saldo:'+convert(varchar(10),(@saldo+@m))

fin

más

comienzo

revertir transacción

imprimir'¡Error en el retiro! Después del retiro, el saldo de la tarjeta debe ser superior a 1 yuan. El saldo es insuficiente...'

print'Número de tarjeta:'+@card+' '+'Saldo:'+convert(varchar). (10),(@balance+@ m))

end

end

go

--Crear un procedimiento almacenado

--Li Si Deposit

establecer nocount en

si existe (seleccione * de sysobjects donde nombre ='proc_inputMoney')

procedimiento de eliminación proc_inputMoney

ir

crear procedimiento proc_inputMoney

@card varchar(19),

@m dinero,

@type varchar(4)

como

comenzar la transacción