数据库:Sql server 2005
ALTER proc [dbo].[test]@iscj bit,
@yongdi nvarchar(50)
asdeclare @sql nvarchar(3000)
set @sql=' select top 5 * from table where levelet=2 'if (@yongdi<>'')
begin
set @sql=@sql+' and yongdi='+@yongdi
endif(@iscj<>'') --这里该如何判断,不论传什么值进去,都查不出false的记录 begin
set @sql=@sql+' and iscj='+cast(@iscj as varchar(10))
endexec (@sql)
ALTER proc [dbo].[test]@iscj bit,
@yongdi nvarchar(50)
asdeclare @sql nvarchar(3000)
set @sql=' select top 5 * from table where levelet=2 'if (@yongdi<>'')
begin
set @sql=@sql+' and yongdi='+@yongdi
endif(@iscj<>'') --这里该如何判断,不论传什么值进去,都查不出false的记录 begin
set @sql=@sql+' and iscj='+cast(@iscj as varchar(10))
endexec (@sql)
解决方案 »
- 元芳,你怎么看? if不成立,却执行了第一个条件,导致报错......
- sqlserver2005删除字段错误,求解!
- 比较急的东西,在线等
- 我使用事务,为什么有的执行有的不执行,事务不是全部执行或者都不执行吗?
- SQL三表联合查询问题,求指导!
- 求教一个update语句
- 请教一个如何写如下的存储过程:查找'abcd',允许错两个字符(错误位置任意),例如'abef'可以, 但是'aefg'不行
- 眼都花了,还没找到错误!!
- Like在Access数据库中为什么不能用?
- 触发器中如何判断那些记录是Insert or Update or Delete 所影响的记录?
- 怎样设置sql server 2005缓存
- 如何判断表中那个字段建立了聚集索引?
begin
set @sql=@sql+' and iscj='+cast(@iscj as varchar(1))
end
ALTER proc [dbo].[test]@iscj bit,
@yongdi nvarchar(50)
as
begin
select top 5 * from [table]
where levelet=2
and yongdi=ISNULL(@yongdi,yongdi)
and iscj=ISNULL(@iscj,iscj)
end
这个是布尔值
不是true和false
if(@iscj<>'') --这里该如何判断,不论传什么值进去,都查不出false的记录begin
set @sql=@sql+' and iscj='''+@iscj+''''
end
if(@iscj<>'false' or @iscj<>'true')
begin
set @sql=@sql+' and iscj='''+@iscj+''''
end