CREATE PROCEDURE  Test
@Query as char(10),     ---- 查询字段
@SqlString as char(10)  -----查询条件as
declare @sql nvarchar(1000)
set @sql=N' select ComputerNO as 电脑编号,'+
         N'        FinanceNO as 财务编号 ,'+
         N'        Type as 电脑类型,'+
         N'        Re as 备注,'+
         N'        BuyTime as 购买时间,'+
         N'        [User] as 使用者'+
         N' From  computer'+
         N' where '+@Query+'=@SqlString' exec sp_executesql @sql,N'@SqlString char(10)',@SqlStringGO

解决方案 »

  1.   

    当字段用变量表示 时,需要用到动态SQL语句才能执行。改动如下:
    CREATE PROCEDURE  Test
    @Query as char(10),---- 查询字段
    @SqlString as char(10)-----查询条件as
    declare @str varchar(4000)
    set @str='select ComputerNO as 电脑编号,FinanceNO as 财务编号 ,Type as 电脑类型,Re as 备注,
           BuyTime as 购买时间,
           User as 使用者
     From  computer
    where '+@Query+'='+@SqlString --Select @Query as 传递进入的查询字段  ----为测试查看用
    --Select @SqlString as 查询的SQL条件   -----为测试查看用
    exec(@str)
    return
    GO
      

  2.   

    谢谢了两位的指导,
    已经能够运行,但是
    运行是
    execute  test "Type",@Sqlstring="'a%'"再请教如何把查询条件中的这两个单引号放在存储过程中!CREATE PROCEDURE  Test@Query as char(20),---- 查询字段
    @SqlString as  varchar(50)-----查询条件as
    Declare  @Str  varchar(4000) set @Str ='select ComputerNO as 电脑编号,  FinanceNO as 财务编号 ,Type as 电脑类型,  Re as 备注,    BuyTime as 购买时间, User as 使用者    From  computer    where  ' + 
         @Query+'   Like'+  @SqlString -----Select @Query as 传递进入的查询字段
    ----Select @SqlString as 查询的SQL条件
    ----select @Str
    Execute  (@Str)return
    GO
    execute  test "Type",@Sqlstring="'a%'"
      

  3.   

    --方法一:
    execute  test 'Type',@Sqlstring='''a%'''
    --方法二:
    execute  test 'Type',@Sqlstring=char(0x27)+'a%'+char(0x27)