4个回答
2014-03-02
展开全部
标准答案:
在最新的SQL2005中的存储过程(Procedure)类似于java语言中的方法,它是SQL语句和控制流语句的预编译集合。存储过程在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量,逻辑控制语句以及其他强大的编程功能。
存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数,输出参数,返回单个或多个结果集以及返回值。
给你一个例子:
create proc proc_takeMoney
@cardID1 varchar(20), --汇款账号
@pwd int , --汇款密码
@takeMoney money, --汇款金额
@cardID2 varchar(20) --存款账号
as
set nocount on
declare @err int
set @err = 0
if exists(select 1 from cardInfo where cardID = @cardID1 and pass = @pwd)
begin
begin tran --事物开始
update cardInfo set balance = balance + @takeMoney where cardID = @cardID2 --接受款帐户加上@takeMoney
set @err = @err + @@error
update cardInfo set balance = balance - @takeMoney where cardID = @cardID1 --汇款帐户减去@takeMoney
set @err = @err + @@error
/*--交易信息表插入交易信息--*/
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID1,'支取',@takeMoney)
set @err = @err + @@error
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID2,'存入',@takeMoney)
set @err = @err + @@error
/*--交易信息--*/
select top 2 * from transInfo order by transDate desc
if(@err<>0)
begin
rollback tran --错误回滚事物
end
else
begin
commit tran --无错误提交事物
end
end --if结束
else
begin
print '密码错误'
end
/*--调用存储过程--*/
declare @cardID1 varchar(20),@cardID2 varchar(20),@pwd int ,@takeMoney money
set @cardID1 ='1010 3576 1234 5678' --张三卡号
set @pwd = 888888 --张三密码
set @cardID2 ='1010 3576 1212 1134' --李四卡号
set @takeMoney =20 --汇款金额
exec proc_takeMoney @cardID1 ,@pwd,@takeMoney,@cardID2
在最新的SQL2005中的存储过程(Procedure)类似于java语言中的方法,它是SQL语句和控制流语句的预编译集合。存储过程在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量,逻辑控制语句以及其他强大的编程功能。
存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数,输出参数,返回单个或多个结果集以及返回值。
给你一个例子:
create proc proc_takeMoney
@cardID1 varchar(20), --汇款账号
@pwd int , --汇款密码
@takeMoney money, --汇款金额
@cardID2 varchar(20) --存款账号
as
set nocount on
declare @err int
set @err = 0
if exists(select 1 from cardInfo where cardID = @cardID1 and pass = @pwd)
begin
begin tran --事物开始
update cardInfo set balance = balance + @takeMoney where cardID = @cardID2 --接受款帐户加上@takeMoney
set @err = @err + @@error
update cardInfo set balance = balance - @takeMoney where cardID = @cardID1 --汇款帐户减去@takeMoney
set @err = @err + @@error
/*--交易信息表插入交易信息--*/
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID1,'支取',@takeMoney)
set @err = @err + @@error
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID2,'存入',@takeMoney)
set @err = @err + @@error
/*--交易信息--*/
select top 2 * from transInfo order by transDate desc
if(@err<>0)
begin
rollback tran --错误回滚事物
end
else
begin
commit tran --无错误提交事物
end
end --if结束
else
begin
print '密码错误'
end
/*--调用存储过程--*/
declare @cardID1 varchar(20),@cardID2 varchar(20),@pwd int ,@takeMoney money
set @cardID1 ='1010 3576 1234 5678' --张三卡号
set @pwd = 888888 --张三密码
set @cardID2 ='1010 3576 1212 1134' --李四卡号
set @takeMoney =20 --汇款金额
exec proc_takeMoney @cardID1 ,@pwd,@takeMoney,@cardID2
2014-03-02
展开全部
存储过程(StoredProcedure)是一种数据库对象。
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。
用户通过制定存储过程的名字并给出参数来执行它。
使用存储过程的好处
省掉了SQL语句在SqlServer中的编译过程,提高程序运行效率
应用程序中不用编写很长的SQL语句,提高代码可读性
数据库的操作方法和应用程序的设计方法有效隔离,有利安全。
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。
用户通过制定存储过程的名字并给出参数来执行它。
使用存储过程的好处
省掉了SQL语句在SqlServer中的编译过程,提高程序运行效率
应用程序中不用编写很长的SQL语句,提高代码可读性
数据库的操作方法和应用程序的设计方法有效隔离,有利安全。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-02
展开全部
存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列 SQL 语句。
可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。
你可以在SQL的联机丛书里面找到相关的解释,以及语法运用,当然了还有实例.好好加油!:)
有什么不明白的可以联系我,呵呵.
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列 SQL 语句。
可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。
你可以在SQL的联机丛书里面找到相关的解释,以及语法运用,当然了还有实例.好好加油!:)
有什么不明白的可以联系我,呵呵.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-02
展开全部
sql存储过程是用变量接受的,定义的语法也很简单,找本书看看会很有帮助的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询