取循环次数啊
set @span = datediff(Day, @startDate, @endDate)
set @i = 0
while (@i <= @span)
begin
set @date = dateadd(day, @i, @startDate)
if (datepart(dw, @date) != 1 and datepart(dw, @date) != 7)
begin
--产生一行数据
set @week = datediff(week, @termDate, @date) + 1
--set @courseDate = convert(varchar(4), datepart(yy, @date)) + '-' + convert(varchar(2), datepart(mm, @date)) + '-' + convert(varchar(2), datepart(dd, @date))
set @courseDate = str(datepart(yy, @date)) + '-' + convert(varchar(2), datepart(mm, @date)) + '-' + convert(varchar(2), datepart(dd, @date))
set @weekday = right(DATENAME(dw, @date), 1)
--上午的课程
set @amCourse = ''
set @courseTime = ''
set @teacher = ''
--是否是有课
SELECT @amCourse = Fs_Kcmc, @courseTime = cast(Fi_Ks as varchar(10)), @teacher = Fs_Name FROM T_Kcszb a, T_Xxkkkc b, T_Teacher_Docu c WHERE a.Fi_Jdjh_Id = @PhaseId AND a.Fd_Skrq = @date AND a.Fi_Sksj = 590001 AND a.Fi_Course_Id = b.Fi_Course_Id and a.Fi_Zg_Id = c.Fi_Zg_Id
--是否有活动
if (@@rowcount != 1)
select @amCourse = Fs_Name_Small from T_Qtjxhdb a, T_Refe b where a.Fi_Hdlx = b.Fi_Key_Code and a.Fi_Jdjh_Id = @PhaseId and a.Fd_Hdrq = @date and a.Fi_Hdsj = 590001
--if (@amCourse = '')
--set @amCourse = '无'
--下午的课程
set @pmCourse = ''
--是否是有课
SELECT @pmCourse = Fs_Kcmc, @courseTime = cast(Fi_Ks as varchar(10)), @teacher = @teacher + ' ' + Fs_Name FROM T_Kcszb a, T_Xxkkkc b, T_Teacher_Docu c WHERE a.Fi_Jdjh_Id = @PhaseId AND a.Fd_Skrq = @date AND a.Fi_Sksj = 590002 AND a.Fi_Course_Id = b.Fi_Course_Id and a.Fi_Zg_Id = c.Fi_Zg_Id
--是否有活动
if (@@rowcount != 1)
select @pmCourse = Fs_Name_Small from T_Qtjxhdb a, T_Refe b where a.Fi_Hdlx = b.Fi_Key_Code and a.Fi_Jdjh_Id = @PhaseId and a.Fd_Hdrq = @date and a.Fi_Hdsj = 590002
为什么一定要用存储过程?
用SQL 不可以吗?存储过程概念上将不返回数据集,你这样的话,也只会是用另外一个DataSet;所以,我觉的用普通的DataSet可能更好一些:如:
with TQuery(DataSet) do
begin
if Active then
Active := False;
SQL.Clear;
SQL.Add('select * form a left join select * from b on ....');
Prepared;
Open;
end;
这样吧:
create proc proctest(
@aVar int)
as
begin
if @aVar=1
select Field1 AS Coll1, Field2 as Coll2 from TableName
if @aVar=2
select Field3 AS Coll1, Field4 as Coll2 from TableName
.....
end
create proc proctest
as
while (i < 10)
begin
if i = 1
select 1 col1, 2 col2, 3 col3 from a
if i = 2
select 4 col1, 5 col2, 6 col3 from a
if i = 3
select 7 col1, 8 col2, 9 col3 from a
if i = 4
。。。。。。
end