假设@BY_WHERE = " id = '1'"存储过程内容为:CREATE PROCEDURE [dbo].[T_DJ_NSRJBXX_QUERY]

@BY_WHERE   VARCHAR(2000)
ASBEGINFROM T_DJ_NSRJBXX nsr where这儿怎么写?@BY_WHERE?

解决方案 »

  1.   

    @BY_WHERE = " id = '1'",在存储过程内部会当字符串处理
      

  2.   

    EXECUTE IMMEDIATE ‘... FROM T_DJ_NSRJBXX nsr where ’+ @by_where
      

  3.   

    我覺得問題在你傳入的參數,如果要使條件為id = '1'的話,應該傳入的參數是'id = ''1'''
      

  4.   

    lufancy(奇闻共欣赏,异议相与析),谢谢你,能否请你给出完整代码啊,俺新手,谢谢
      

  5.   

    这里可以这样写用一个变量连接成SQL语句后用EXEC来执行
    declare @sql varchar(8000)
    set @sql = 'select * FROM T_DJ_NSRJBXX nsr where ' + @BY_WHERE
    exec(@sql)这样就可以了
      

  6.   

    楼上exec(@sql) 是方法还有个方法
    '用char(39)来替代~~
      

  7.   

    假设@BY_WHERE = " id = '1'"
    传入参数时用 'id=''1'''declare @str varchar(8000)
    set @str = '... FROM T_DJ_NSRJBXX nsr where ' + @BY_WHERE
    exec(@str)
      

  8.   

    set @strsql='dsafasdfsadf'
    exec(@strsql),要用动态sql了.
      

  9.   

    declare @str varchar(1000)
    set @str='电算代号=''1'''
    print @str
      

  10.   

    CREATE PROC [dbo].[T_DJ_NSRJBXX_QUERY]
    (
      @BY_WHERE  VARCHAR(2000)
    )
    ASBEGIN
    declare @sql varchar(1000)
    set @sql = 'select * FROM T_DJ_NSRJBXX nsr where ' + @BY_WHERE
    exec(@sql)
    end