set  @mywhere=' aa=''a1'''
写在
 AS
的后边

解决方案 »

  1.   

    动态sql语法:CREATE PROCEDURE testpro
    @mywhere nvarchar(50)
    AS
    declare @sql varchar(2000) --动态sql字符串
    set @sql='select aa,bb from test   where aa=' + @mywhere 
    exec (@sql) --执行动态sql语句
    go
    -------------------------------------
    然后在程序或查询分析器执行该存储过程并给@mywhere参数赋值,就可以得到
    test表中aa字段值为你复制的记录了
      

  2.   

    --创建调试环境
    if object_id('tbl_t') is null
    print 'not exists'
    else
    drop table tbl_t
    create table tbl_t
    (
    aa varchar(20),
    bb varchar(20)
    )insert into tbl_t values('a1','b1')
    insert into tbl_t values('a2','b2')
    insert into tbl_t values('a3','b3')
    insert into tbl_t values('a4','b4')
    select * from tbl_tcreate PROCEDURE testpro
    @mywhere nvarchar(50)
    as
      exec('select aa,bb from tbl_t  where '+ @mywhere )
    gotestpro ' aa=''a1'''--删除表
    drop table tbl_t
    --结果:
    /*
    aa                   bb                   
    -------------------- -------------------- 
    a1                   b1(所影响的行数为 1 行)
    */
      

  3.   

    忘了说了,你得用字符串把他们连起来,然后使用exec()来执行这个字符串——把字符串变量放在()内
      

  4.   

    建议楼主有必要搞搞明白嵌入的sql和动态sql我也不大清楚,只是觉得不同呵呵