YanHai.net  
网站地图 RSS订阅
高级搜索 收藏本站
热门关键字: 菜单
  当前位置:主页>数据库>MSSQL>文章内容
  热点文章
·SQL连接,类型,建表,用法收集
·精妙Sql语句
·SQL2000分页存储过程
·阿里巴巴公司DBA(数据库管理员)
  相关文章
·SQL2000分页存储过程
·SQL连接,类型,建表,用法收集
·精妙Sql语句
·阿里巴巴公司DBA(数据库管理员)
存储过程组合SQL语句的方法
来源: 作者: 发布时间:2007-12-03  

在工作中遇到的一个问题!就是在写存储过程时当where语句中遇到参数时就无法执行的问题!解决办法是把所有语句和变量组合成一个字符串,然后在利用exec(@字符串)就可以了。
下面是例子:

Create procedure pPassMeeting (@MeetingID varchar(1000),@UserID varchar(20),@Rte varchar(1000) out) 
as
DECLARE @smeetingid varchar(1002)
DECLARE @MeetingRoomID int
DECLARE @MeetingName varchar(100)
DECLARE @BeginDate datetime
DECLARE @EndDate datetime
--DECLARE @Rte varchar(1000)

Select @Rte = '' 
Select @smeetingid = '('+@MeetingID+')'


declare @sqlExec varchar(8000)

set @sqlExec = 'declare cursor1 cursor for ' + CHAR(13) 

set @sqlExec = @sqlExec + ' Select MeetingRoomID,BeginDate,EndDate,MeetingName FROM Meeting_Info'+
' Where MeetingID in '+ @smeetingid + ' and State <> 1'


--print @sqlExec

exec(@sqlExec) 

open cursor1 

FETCH NEXT FROM cursor1 into @MeetingRoomID,@BeginDate,@EndDate,@MeetingName
WHILE @@FETCH_STATUS = 0
BEGIN
if (exists(select 1 from meeting_info where State = 1 and MeetingRoomID = @MeetingRoomID and
not ((@EndDate <= BeginDate) or (EndDate <= @BeginDate)) 
))
begin
set @Rte = @MeetingName
break
end

FETCH NEXT FROM cursor1 into @MeetingRoomID,@BeginDate,@EndDate,@MeetingName
END

CLOSE cursor1
DEALLOCATE cursor1
if @Rte = '' 
begin
set @sqlExec = 'update Meeting_Info set State = 1 ,CheckID = ' + @UserID + ' where MeetingID in '+ @smeetingid + ' and State <> 1'
--print @sqlExec
exec(@sqlExec) 
end


(阅读次数:
上一篇:SQL2000分页存储过程   下一篇:Transact_SQL小手册
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 最新评论
友情链接 [所有链接] [申请链接]
 DANB GROUP  DB Shop  MINDPATH US  MINDPATH CN  奥佳晋特科技  梦网互联  卓壮速度轮滑俱乐部
 北京中文德利行  Perfect Home  ASIA WEEKLY  Garden of Delights  Web Rank Info  HEALTH TRAVEL ASIA
 Y.H.    AUG Group  
Search Engine Spider Simulator

Enter URL to Spider:

Valid XHTML 1.0 Transitional

Valid XHTML 1.0 Transitional