|
在工作中遇到的一个问题!就是在写存储过程时当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
(阅读次数:)
|