在存储过程中如何执行动态SQL语句

djdy_fei 2012-07-09 04:26:18
这是一个拼接SQL语句的存储过程

use kj249
go
/*--检查存储过程是否存在--*/
if exists(select * from sysobjects where name='proc_guiji')
drop procedure proc_guiji
go
/*--创建储过程--*/
create procedure proc_guiji
@stime datetime='',
@etime datetime='',
@bh varchar (100)=''
as
declare @sql varchar(8000)
set @sql='
select bh as bh,(select name from personinf where bh=P'+convert(varchar(8),@stime,112)+'.bh) as name,ygh as ygh,point as point,(select fzwzh from fzinfo where fzname=point) as fzwzh,rtime as rtime from p'+convert(varchar(8),@stime,112)+' where bh='+@bh
while convert(varchar(8),@stime,112)<convert(varchar(8),@etime,112)
begin
set @stime=dateadd(DD,1,@stime)
set @sql=@sql+'
union all
select bh as bh,(select name from personinf where bh=P'+convert(varchar(8),@stime,112)+'.bh) as name,ygh as ygh,point as point,(select fzwzh from fzinfo where fzname=point) as fzwzh,rtime as rtime from p'+convert(varchar(8),@stime,112)+' where bh='+@bh
end
--print @sql
go
/*--调用存储过程--*/
EXEC proc_guiji '2011-06-21','2011-07-21','114'

如何执行这个动态的SQL语句 并返回结果
...全文
69 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
人生无悔 2012-07-09
  • 打赏
  • 举报
回复

--若你的sql沒錯,直接執行不就可以了
--print @sql
exec(@sql)
Felixzhaowenzhong 2012-07-09
  • 打赏
  • 举报
回复
use kj249
go
/*--检查存储过程是否存在--*/
if exists(select * from sysobjects where name='proc_guiji')
drop procedure proc_guiji
go
/*--创建储过程--*/
create procedure proc_guiji
@stime datetime='',
@etime datetime='',
@bh varchar (100)=''
as
declare @sql varchar(8000)
set @sql='
select bh as bh,(select name from personinf where bh=P'+convert(varchar(8),@stime,112)+'.bh) as name,ygh as ygh,point as point,(select fzwzh from fzinfo where fzname=point) as fzwzh,rtime as rtime from p'+convert(varchar(8),@stime,112)+' where bh='+@bh
while convert(varchar(8),@stime,112)<convert(varchar(8),@etime,112)
begin
set @stime=dateadd(DD,1,@stime)
set @sql=@sql+'
union all
select bh as bh,(select name from personinf where bh=P'+convert(varchar(8),@stime,112)+'.bh) as name,ygh as ygh,point as point,(select fzwzh from fzinfo where fzname=point) as fzwzh,rtime as rtime from p'+convert(varchar(8),@stime,112)+' where bh='+@bh
end
--print @sql
exec (@SQL)--------------执行
go
/*--调用存储过程--*/
EXEC proc_guiji '2011-06-21','2011-07-21','114'




34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧