sql存储过程动态添加条件[写法]
CREATE PROCEDURE [dbo].[Find_]
@daeStart smalldatetime , @daeEnd smalldatetime , @strBmph varchar(20) , @strField varchar(5) , @strText varchar(20)
as
declare @i int , @strSql varchar(100)
set @i = 1
if @strBmph <> '' set @strSql = ' and bmph = ' + @strBmph
if @strField <> '' and @strText <> '' set @strSql = @strSql + ' and ' + @strField + ' = ' + @strText
begin
/*以下语法错误,请大家赐教。*/
select * from aaa where bDel = 0 + @strSql
end
go
exec [Find_] '2011-6-10','2011-6-30' , '人事部' , '' ,''
go
drop procedure find_
[解决办法]
- SQL code
CREATE PROCEDURE [dbo].[Find_]@daeStart smalldatetime , @daeEnd smalldatetime , @strBmph varchar(20) , @strField varchar(5) , @strText varchar(20)asdeclare @i int , @strSql varchar(100)set @i = 1if @strBmph <> '' set @strSql = ' and bmph = ' + @strBmphif @strField <> '' and @strText <> '' set @strSql = @strSql + ' and ' + @strField + ' = ' + @strTextbegin/*以下语法错误,请大家赐教。*/exec('select * from aaa where bDel = 0 '+ @strSql )endgoexec [Find_] '2011-6-10','2011-6-30' , '人事部' , '' ,''godrop procedure find_
[解决办法]
CREATE PROCEDURE [dbo].[Find_]
@daeStart smalldatetime ,
@daeEnd smalldatetime ,
@strBmph varchar(20) ,
@strField varchar(5) ,
@strText varchar(20)
as
declare @i int , @strSql varchar(100)
set @i = 1
set @strSql='select * from aaa where bDel = 0 '
if @strBmph <> '' set @strSql = ' and bmph = ' + @strBmph
if @strField <> '' and @strText <> '' set @strSql = @strSql + ' and ' + @strField + ' = ' + @strText
print (@strSql)
exec (@strSql)
[解决办法]
[解决办法]
把你的语句放入临时表 然后insert into #tb exec...
[解决办法]
用一个字符串起来 exec ...
[解决办法]
感觉像多条件的查询的语句,楼主完全可以不用这样判断,假如20多个条件
你会更蒙
个人建议,像这样写更好点:
select * from test where (字段1=条件 or 1=1) and (字段2<>条件 or 1=1) and (字段3 like 条件 or 1=1)