分享

存储过程设计

 悟静 2012-02-16

数据库设计 (存储过程设计)

6.存储过程设计

存储过程(Stored Procedure)是一组预先编译好的Transact-SQL语句。用户可以通过调用存储过程来执行其中的SQL语句。应用存储过程可以提高程序执行速度、使程序模块化、减少网络通信量和保证系统的安全性。

在SQL查询分析器中,输入指定的Transact-SQL语句可以创建存储过程。例如:

USE db_sell
GO
CREATE procedure P_ruku
@pzs int,     --用于接收商品种数
@je money,     --用于接收入库金额
@sf money,     --用于接收实付金额
@gysname varchar(100),   --用于接收供应商名称
@date datetime,    --用于接收入库日期
@operator varchar(30),   --用于接收操作员
@jsr varchar(30),    --用于接收经手人
@jsfs varchar(10),    --用于接收结算方式
@rukuid varchar(30) output  --用于输出入库编号
as
begin
Declare @temp varchar(30) --提取游标中的数据
set @rukuid = 'RK'+ Convert(varchar(20),Year(@date))
if Month(@date)<10    --将月格式化为两位数字
set  @rukuid = @rukuid +'0'+ Convert(varchar(20),Month(@date))
else
set  @rukuid = @rukuid+Convert(varchar(20),Month(@date))
if Day(@date)<10     --将日格式化为两位数字
set @rukuid = @rukuid +'0'+ Convert(varchar(20),Day(@date))
else
set @rukuid = @rukuid+Convert(varchar(20),Day(@date)) 
--声明一个局部游标用于提取当前日期的最大入库编号
declare fetch_MaxPh  Cursor LOCAL Scroll
for
select Max(rkid) from tab_ruku_main where rkdate>=
FLOOR(Convert(Float,@date)) and rkdate<Floor(Convert (Float,@date))+1
if CURSOR_STATUS('local','fetch_Maxph')= -1 --如果游标未打开,则打开游标
Open fetch_Maxph
Fetch first from fetch_Maxph into @temp
Close fetch_Maxph
Declare @Id Int 
if @temp is NUll
begin
set @rukuid = @rukuid+'001'   
end
else
begin  --确定入库编号后3位数字的显示格式
set @id = Convert(int,SUBSTRING(Rtrim(@temp),11,10))
if @id <9
set @rukuid = @rukuid +'00'+Convert(varchar(20),@id+1)
else if @id <99
set @rukuid = @rukuid +'0'+Convert(varchar(20),@id+1)
else
set @rukuid = @rukuid + Convert(varchar(20),@id+1)   
end
--将接收到的数据添加到tab_ruku_main表中
insert into tab_ruku_main values (@rukuid,@pzs,@je,@sf,
@gysname,@date,@operator,@jsr,@jsfs)
end
GO
名为P_ruku的存储过程是将接收到的数据添加到tab_ruku_main表中。由于篇幅有限,本系统所涉及的其他存储过程可参见本书附带的光盘。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多