首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

根据提供的参数执行存储过程,该如何处理

2012-05-05 
根据提供的参数执行存储过程CREATEPROC PR_CGDDSH@rq1 datetime,@rq2 datetimedeclare @sql varchar(50)se

根据提供的参数执行存储过程
CREATE PROC PR_CGDDSH
@rq1 datetime,@rq2 datetime


declare @sql varchar(50)
select @sql= sql from A


//实际@sql=selec * from B where rq>@rq1 and rq<@rq2



现在得到了@rq1和@rq2
如何执行 exec @sql 这个语句,代码怎么写





[解决办法]

SQL code
set @sql='select * from B where rq>'+@rq1+' and rq<'+@rq2exec(@sql)
[解决办法]
用sp_executesql,具体参考sql帮助
[解决办法]
lz:参考这两个

sp_executesql

exec(@sql)

希望lz成功。
[解决办法]
EXEC (@Sql) 这样执行sql语句时,@Sql中是不能包括变量的,所以你在拼接@Sql的时候需要先把@Value,@Start,@End,@Check赋值之后再拼接到@Sql中执行就可以了。
[解决办法]
exec执行的动态语句是在另外的批处理执行的,因此exec外部声明的变量是没有用的,exec里是找不到这些变量的,
可以使用sp_executesql来完成。
SQL code
ALTER procedure [dbo].[SP_SQL](@form_name varchar(50),@F_tag varchar(50),@Start datetime,@End datetime,@Value varchar(50),@check int)asbegindeclare @sql varchar(500)select @sql=F_sql from T_sql where F_class=@form_name and F_tag=@F_tagEXECUTE sp_executesql         @sql, '@st datetime, @ed datetime, @v varchar(50), @ck int',         @st = @Start,        @ed = @End,        @v = @Value,        @ck =@check;
[解决办法]
探讨
引用:
用sp_executesql,具体参考sql帮助



sp_executesql可以的,我跟踪了代码显示

exec sp_executesql N'select a.*,(case a.F_Type when ''销售退货入库'' then c.F_Name when ''委外退料入库'' then d.F_Name when ''委外完工入库'' the……

热点排行