在存储过程中,要实现的内容如下:
传入一个整型参数@aaa,然后与数据库B表中的bbb字段(整型)进行与运算,判断与后的结果是否大于0,如果大于0,就返回真,否则假.
希望大家能帮忙~~~

解决方案 »

  1.   

    create proc test1
    @aaa int
    as 
    declare @bbb int
    select @bbb = bbb from [你要比较的表] where [条件]
      

  2.   

    晕!怎么没写完就自动发出去了?不好意思
    create proc test1
    @aaa int   --传入的参数
    as 
    declare @bbb int 
    --取你要比较的值
    select @bbb = bbb from [你要比较的表] where [条件]if (@aaa - @bbb > 0)
    return true
    else
    return falseGO
    在前台接这个存储返回的值就可以了
      

  3.   

    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from b where (bbb&'+@aaa+')>0'
    exec sp_executesql @sqlstr我这样不能执行成功,但是如果我写成下面这样就可以执行select * from b where (bbb&@aaa)>0
      

  4.   

    declare @input int
    set @input = 10
    declare @a int
    select @a = @input&col from table
    if(@a >1)
    begin
    print '大于0'
    end
    else
    begin
    print '小于或等于0'
    end
      

  5.   

    由于需求,我必须要用下面的这种形式,因为还有很多的条件要加,可是怎么不能啊?
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from b where (bbb&'+@aaa+')>0'
    exec sp_executesql @sqlstr
      

  6.   

    谢谢楼上的两位,可是依然不能满足我的需求~~
    我如果不用存储过程的话,可以实现动态的sql语句.
    难道在sql里面实现的,就不能用在存储过程中吗?
      

  7.   

    declare @input int
    set @input = 1233
    select * from orders where @input&orderid>0
      

  8.   


    declare @aaa int
    set @aaa = 0
    select * from b where (bbb&@aaa)>0
      

  9.   

    当然可以用存储过程,存储过程之是把多个SQL语句封装在一起而已
    use northwind
    go
    create proc test
    @input int
    as
    select * from orders where @input&orderid>0exec test 1
    exec test 10
      

  10.   

    楼上的,确实是可以的
    但是我现在是要动态的添加条件,这种方法是不可行的...
    我现在用的这种方法
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from b where (bbb&'+@aaa+')>0'
    exec sp_executesql @sqlstr系统默认把'select * from b where (bbb&'来我@aaa进行与运算,这当然是错误,我现在就是不知道该怎么改,才能使得bbb和@aaa进行与???
      

  11.   

    declare @input int
    set @input = 1
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from orders where (orderid&@input_)>0'
    exec sp_executesql @sqlstr ,N'@input_ int',@input_=@input
      

  12.   

    楼主可以看看查询SQL联机帮助上对sp_executesql的介绍
      

  13.   

    我明白你的意思了bbb&@aaa  放到字符串内被隐式转换成了varchar
    所以你应该这样写set @sqlstr='select * from b where (bbb&cast('''+@aaa+''' as int))>0'bbb应该不用写成cast(bbb as int)如果你行你再将bbb写强制转换
      

  14.   

    如上所述,使用系统存储过程 sp_executesql 可显示指定参数
      

  15.   

    用存储过程的话hb_gx(高升)的做法就很棒,
    存储过程中直接用这句select case when (@aaa & (select bbb from table_name where bbb=800))=0 then 'true' else 'false' end
    也可以
      

  16.   

    to:sbqcel(空空儿)
    declare @input int
    set @input = 1
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from orders where (orderid&@input_)>0'
    exec sp_executesql @sqlstr ,N'@input_ int',@input_=@input今天停电了,没有回复,不好意思啊!!!你的这种方法我昨天试了真的可以,以前我只用了exec sp_executesql @sqlstr,而没有在后面加参数,不过我感到奇怪,用exec sp_executesql @sqlstr的话,一定要在这个后面定义参数么?
    我直接用set @sqlstr='select * from orders where (orderi&'+@input+')>0',为什么就不行呢,系统就会提示"将 varchar 值 'select * from b where bbb=' 转换为数据类型为 int 的列时发生语法错误。"
      

  17.   

    我做了个测试,建了个表,3个字段  b(id int,bbb int,bbbb varchar(50))
    然后建了个存储过程;
    ALTER PROCEDURE dbo.test
    (
    @aaa int,
    @ccc varchar(50)
    )
    AS/*方案一 正确
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from b where (bbb&@aaa_)>0'
    exec sp_executesql @sqlstr,N'@aaa_ int',@aaa_=@aaa
    *//*测试二  错误
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from b where (bbb&'+@aaa+')>0'
    exec sp_executesql @sqlstr
    *//*测试三 正确
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from b where bbbb='''+@ccc+''''
    exec sp_executesql @sqlstr
    *//*测试四 错误
    declare @sqlstr nvarchar(1024)
    set @sqlstr='select * from b where bbb='+@aaa
    exec sp_executesql @sqlstr
    */希望大家能指出其中的错误是为什么,谢谢!!!
      

  18.   

    SQL里 & 是对int,smallint,tinyint进行于运算
    set @sqlstr='select * from orders where (orderi&'+@input+')>0'
    这种新式是动态拼装SQL语句,''里的数据是字符串了,也就是varchar类型的了
    sp_executesql 是 运行时生成语句 ,这个和动态拼装SQL语句有着天壤之别
    你在SQL SERVER 联机帮助里查看下sp_executesql的说明就不难理解了
      

  19.   

    哦,
    我原来是直接用在.net里面用sql语句,用sqlcommand执行
    比如string sqlstr="select * from orders where (orderi&"+@input+")>0";我以为在存储过程也是一样,原在存储过程中动态构造sql是行不通的,害得我一直找不出错误来,真的非常感谢你啊!!!
    我现在再看看联机帮助...