T-SQL编程,存储过程编写和调用

如何进行T-SQL的编程,存储过程编写和调用有谁能否帮我举一个例子?

一个完整的。 看看吧 use master
go
--创建数据库
if exists(select * from sysdatabases where name = 'bankDB')
drop database bankDB
go
create database bankDB
on
(
name = 'bankDB',
filename = 'e:\bankDB.mdf',
size = 3mb,
filegrowth = 20%
)
gouse bankDB
go
--创建表UserInfo
if exists(select * from sysobjects where name = 'UserInfo')
drop table UserInfo
go
create table UserInfo
(
customerID int identity(1,1) not null,
customerName varchar(16) not null,
PID varchar(20) not null,
telephone varchar(15) not null,
address varchar(225)
)
goalter table UserInfo
add constraint PK_customerID primary key(customerID),
constraint UQ_PID unique (PID),
constraint CK_PID check((len(PID)=15) or (len(PID)=18)),
constraint CK_telephone check(len(telephone) between 11 and 13)--(telephone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') or (telephone like '[0-9][0-9][0-9][0-9][-][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')or (telephone like '[0-9][0-9][0-9][-][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
goinsert into UserInfo(customerName,PID,telephone,address)
select '张三','123456789012345','010-67898978','北京海淀' union
select '李四','321245678912345678','0478-44443333',null
go--创建表cardInfo
if exists(select * from sysobjects where name = 'cardInfo')
drop table cardInfo
go
create table cardInfo
(
cardID varchar(19) not null,
curType varchar(10) not null,
savingType varchar(10) not null,
openDate datetime not null,
openMoney money not null,
balance money not null,
pass varchar(12) not null,
IsReportLoss varchar(2) not null,
customerID int not null
)
goalter table cardInfo
add constraint PK_cardID primary key (cardID),
constraint CK_cardID check(cardID like ('1010[ ]3576[ ][0-9][0-9][0-9][0-9][ ][0-9][0-9][0-9][0-9]')),
constraint DF_curType default('RMB') for curType,
constraint CK_savingType check(savingType in('活期','定活两便','定期')),
constraint DF_openDate default(getdate()) for openDate,
constraint CK_openMoney check(openMoney>=1),
constraint CK_balance check(balance>=1),
constraint DF_pass default('888888') for pass,
constraint CK_IsReportLoss check(IsReportLoss in('是','否')),
constraint DF_IsReportLoss default('否') for IsReportLoss,
constraint FK_customerID foreign key(customerID) references UserInfo(customerID)
goinsert into cardInfo(cardID,savingType,openMoney,balance,customerID)
select '1010 3576 1234 5678','活期',1000,1000,1 union
select '1010 3576 1212 1134','定期',1,1,2
go--创建表transInfo
if exists(select * from sysobjects where name = 'transInfo')
drop table transInfo
go
create table transInfo
(
transDate datetime not null,
cardID varchar(19) not null,
transType varchar(4) not null,
transMoney money not null,
remark varchar(225)
)
goalter table transInfo
add constraint DF_transDate default(getDate()) for transDate,
constraint FK_cardID foreign key(cardID) references cardInfo(cardID),
constraint CK_transType check(transType in('存入','支取')),
constraint CK_transMoney check(transMoney>0)
goinsert into transInfo(cardID,transType,transMoney)
values('1010 3576 1234 5678','支取',900)
update cardInfo set balance=balance-900 where cardID='1010 3576 1234 5678'
insert into transInfo(cardID,transType,transMoney)
values('1010 3576 1212 1134','存入',5000)
update cardInfo set balance=balance+5000 where cardID='1010 3576 1212 1134'
go/*----------------常规业务模拟--------------*/
--张三修改卡号密码
update cardInfo set pass='123456' where cardID='1010 3576 1234 5678'
update cardInfo set pass='123123' where cardID='1010 3576 1212 1134'
go
--李四银行卡挂失
update cardInfo set IsReportLoss='是' where cardID='1010 3576 1212 1134'
go
--统计银行的资金流通余额和盈利结算
declare @inMoney money,@outMoney money
select @inMoney=sum(transMoney) from transInfo where transType='存入'
select @outMoney=sum(transMoney) from transInfo where transType='支取'
print '流通金额为:'+convert(varchar(10),@inMoney)+'RMB'
print '取出结算为:'+convert(varchar(10),@outMoney)+'RMB'
print '银行流通金额总计为:'+convert(varchar(10),(@inMoney-@outMoney))+'RMB'
go
--查询本月开户的用户,并显示该卡的相关信息
select 卡号=cardInfo.cardID,
卡号密码=pass,
客户姓名=customerName,
客户身份证号=PID,
电话=telephone,
地址=address,
存款类型=savingType,
开户金额=openMoney,
余额=balance,
币种=curType,
开户日期=openDate
from UserInfo
inner join cardInfo on UserInfo.customerID=cardInfo.customerID
inner join transInfo on cardInfo.cardID=transInfo.cardID
--查询本周
where openDate between (select dateadd(dd,-datepart(dw,getdate())+1,getdate())) and (select getdate())
go
--select getdate()
--select dateadd(dd,-datepart(dw,getdate())+1,getdate())
--select datepart(dw,getdate())
--select datediff(dd,(select dateadd(dd,-datepart(dw,getdate())+1,getdate())),getdate())
--查询挂失账号的客户信息
select 客户姓名=customerName,
电话=telephone
from UserInfo
where customerID=(select customerID from cardInfo where IsReportLoss='是')
go
--催款提醒服务
select 客户姓名=customerName,
联系电话=telephone,
账上余额=balance
from UserInfo inner join cardInfo on UserInfo.customerID=cardInfo.customerID
where balance<=200
go
--创建储存过程
--张三取款
set nocount on
if exists(select * from sysobjects where name ='proc_takeMoney')
drop procedure proc_takeMoney
go
create procedure proc_takeMoney
@card varchar(19),
@m money,
@type varchar(4),
@inputPass varchar(6)=''
as
begin transaction
declare @errorsum int --定义错误累加量
set @errorsum=0
print'交易正在进行,请稍后……'
declare @balance money
select @balance=balance from cardInfo where cardID=@card
update cardInfo set @balance=@balance-@m
where cardID=@card and pass=@inputPass
set @errorsum=@errorsum+@@error
if (@errorsum<>0)
begin
rollback transaction
print'取款失败!取款后卡上的余额必须大于1元,余额不足……'
print'卡号:'+@card+' '+'余额:'+convert(varchar(10),(@balance+@m))
end
else
begin
if @balance>=1 --如果取款后的余额仍大于1,则取款成功
begin
commit transaction
print'取款成功!'
insert into transInfo(cardID,transType,transMoney)
values(@card,@type,@m)
print'卡号:'+@card+' '+'余额:'+convert(varchar(10),(@balance+@m))
end
else
begin
rollback transaction
print'取款失败!取款后卡上的余额必须大于1元,余额不足……'
print'卡号:'+@card+' '+'余额:'+convert(varchar(10),(@balance+@m))
end
end
go
--创建存储过程
--李四存款
set nocount on
if exists(select * from sysobjects where name ='proc_inputMoney')
drop procedure proc_inputMoney
go
create procedure proc_inputMoney
@card varchar(19),
@m money,
@type varchar(4)
as
begin transaction
温馨提示:内容为网友见解,仅供参考
无其他回答

实验六使用T-SQL编写存储过程访问数据库
一实验目的1.理解存储过程的概念、使用方式;2.熟悉使用T-SQL编写存储过程来进行数据库应用程序的设计。二实验工具SQLServer2005利用SQLServer2005SSMS及其SQL查询编辑器,使用T-SQL编写存储过程。三实验内容和要求建立学生-课程数据库,其中包含学生表Student(Sno,Sname,Ssex,Sage,Sdept)、课程表:Course(Cn...

T-SQL和存储过程有什么区别
区别T-SQL是语言,存储过程是数据库一种对象 T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的...

在SQLServer中,存储过程和T-SQL语句,哪个执行快,为什么
存储过程能够实现较快的执行速度。如果某一操作包含大量的SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的执行计划。而批处理的SQL 语句在每次运行时都要进行编译和优化...

存储过程和sql语句有什么区别
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后,注意是经过编译后,存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。再运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改...

sql 调用已经建立的存储过程
1、第一步,创建一个存储过程,该代码如图所示。存储过程的主要目的是为表“JingYan”插入新数据,如下图所示,然后进入下一步。2、其次,完成上述步骤后,执行以下几行代码,并查看执行是否成功。现在,数据库中有一个存储过程源“sp_JY”,如下图所示,然后进入下一步。3、接着,完成上述步骤后,...

T-SQL和存储过程有什么区别
t-sql = transact-sql = sql 程式设计语言的增强版,它是用来让应用程式与 sql server 沟通的主要语言。两者 都是语言.在sql sever查询分析器中的语句是sql 还是t-sql?这个看你输入的是什么?因为 t-sql 包含了 sql 也就是说,你输入了一句 select from 表 这样的标准的 sql 语句,但是 t-sq...

MS sql如何使用存储过程?
when 1 then '忙碌'end as '使用状态' from pc end;--调用存储过程 execute proc_student select * from pc go 3、创建带输入参数的存储过程 语法:代码如下复制代码 create procedure 存储过程名 参数1名 数据类型 [=默认值]...参数2名 数据类型[=默认值]as SQl与语句 ...go ...

什么是存储过程?Sql 存储过程知识详解
ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] ---调用存储过程--- EXECUTE Procedure_name '' --存储过程如果有参数,后面加参数格式为:@参数名=value,也可直接为参数值value ---删除存储过程--- drop procedure procedure_name --在存储过程中能调用另外一个存储过程,而...

小弟初学存储过程,以前做网页的时候C#都是直接用Trunsact-SQL语言...
存储过程 就是把 一批多行的SQL 放在一块,然后取个名称。 可以返回任意值。可以返回一个单值、一个或多个内存表。 相对于直接把SQL语句写在界面层来说,存储过程提供了一定的扩展性能。 改存储过程的代码,是不需要更新界面层或中间层的代码的。举登录的例子来说:写在界面中: select count(1...

使用存储 过程和使用T-SQL查询数据有啥不一样
存储过程在数据量大时使用会很方便,易操作,属于数据库编程。1.由于它不像解释执行的sql语句那样在提出操作请求时才进行语法分析和优化工作,运行效率高,它提供了在服务器端快速执行sql语句的有效途径。2.存储过程降低了客户机和服务器之间的通信量。3.方便实施企业规则。

相似回答