比方说现在有一个时间表,如下:
如果在存储过程中调用另一个存储过程
要将上面这个时间表,处理完后的效果如下:
如果在存储过程中调用另一个存储过程
现在通过存储过程来实现这种效果的处理方法如下:
首先,处理英文月份的存储过程如下:

如果在存储过程中调用另一个存储过程create procedure pro_DealDataTime
如果在存储过程中调用另一个存储过程
@month varchar(255),--月份参数
如果在存储过程中调用另一个存储过程
@result varchar(255) output --输出英文月份
如果在存储过程中调用另一个存储过程
as
如果在存储过程中调用另一个存储过程
set @result =
如果在存储过程中调用另一个存储过程
case
如果在存储过程中调用另一个存储过程    
when @month = '1' then 'Jan'
如果在存储过程中调用另一个存储过程    
when @month = '2' then 'Feb'
如果在存储过程中调用另一个存储过程    
when @month = '3' then 'Mar'
如果在存储过程中调用另一个存储过程    
when @month = '4' then  'Apr'
如果在存储过程中调用另一个存储过程    
when @month = '5' then  'May'
如果在存储过程中调用另一个存储过程    
when @month = '6' then 'Jun'
如果在存储过程中调用另一个存储过程    
when @month = '7' then 'Jul'
如果在存储过程中调用另一个存储过程    
when @month = '8' then 'Aug'
如果在存储过程中调用另一个存储过程    
when @month = '9' then 'Sep'
如果在存储过程中调用另一个存储过程    
when @month = '10' then  'Oct'
如果在存储过程中调用另一个存储过程    
when @month = '11' then  'Nov'
如果在存储过程中调用另一个存储过程    
else  'Dec'
如果在存储过程中调用另一个存储过程
end
如果在存储过程中调用另一个存储过程
如果在存储过程中调用另一个存储过程
GO
如果在存储过程中调用另一个存储过程

其次,通过创建一个用来处理日期的存储过程,如下:
如果在存储过程中调用另一个存储过程CREATE procedure pro_Deal
如果在存储过程中调用另一个存储过程
as
如果在存储过程中调用另一个存储过程
declare @id int --定义ID
如果在存储过程中调用另一个存储过程
declare @date varchar(50)--保存日期vc_date列
如果在存储过程中调用另一个存储过程
declare @edate varchar(50)--保存日期vc_edate列
如果在存储过程中调用另一个存储过程
declare @year varchar(50)--保存年
如果在存储过程中调用另一个存储过程
declare @month varchar(50)--保存月
如果在存储过程中调用另一个存储过程
declare @emonth varchar(50)--保存英文月
如果在存储过程中调用另一个存储过程
declare mycursor cursor for select id,date_3 from tb_meet_2008  --定义一个游标mycursor
如果在存储过程中调用另一个存储过程
open mycursor --打开游标mycursor
如果在存储过程中调用另一个存储过程
fetch next from mycursor into @id,@date--开始抓第一条数据
如果在存储过程中调用另一个存储过程
while(@@fetch_status=0)--如果数据集中一直有数据
如果在存储过程中调用另一个存储过程
begin
如果在存储过程中调用另一个存储过程    
set @year = substring(@date,1,4)
如果在存储过程中调用另一个存储过程    
set @month = SUBSTRING(@date6CHARINDEX(''@date6- 6)
如果在存储过程中调用另一个存储过程     
exec pro_DealDataTime @month,@emonth output;--调用另一个存储过程,@emonth既是返回的数据
如果在存储过程中调用另一个存储过程
         set @edate = @emonth+'-'+substring(@date,3,2)
如果在存储过程中调用另一个存储过程         
insert into tb_date_2008(vc_date,vc_edate,i_year,i_month)values(@date,@edate,@year,@month)
如果在存储过程中调用另一个存储过程        
end        
如果在存储过程中调用另一个存储过程
fetch next from mycursor into @id,@date --抓取下一条记录
如果在存储过程中调用另一个存储过程
end
如果在存储过程中调用另一个存储过程
close mycursor --关闭游标
如果在存储过程中调用另一个存储过程
deallocate mycursor --删除游标
如果在存储过程中调用另一个存储过程
GO
如果在存储过程中调用另一个存储过程

注意代码中这段 exec pro_DealDataTime @month,@emonth output;这句就是来调用另一个存储过程,

相关文章:

  • 2022-12-23
  • 2022-02-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-28
  • 2022-12-23
猜你喜欢
  • 2021-11-17
  • 2022-12-23
  • 2021-11-28
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案