create proc pr_a
@sid varchar(50)
as
select a,b
from ta
where a not in
(select a from @tab
)其中 @tab 这个表名是参数
 我要怎么写
谢谢

解决方案 »

  1.   


    create proc pr_a
    @sid varchar(50)
    as
    exec('select a,b
    from ta
    where a not in
    (select a from' +@tab+
    ')')
      

  2.   

    create proc pr_a
    @tab varchar(50)
    as
    exec('
    select a,b
    from ta
    where a not in
    (select a from '+@tab+')'
    )
      

  3.   

    --用EXEC执行
    exec('select a,b from ta where a not in(select a from' +@tab+')')
      

  4.   

    @tab这个是表名,也是参数,我是没有写进去。
      

  5.   

    create proc pr_a
    @tab varchar(50)
    as
    exec('select a,b from ta where a not in (select a from '+@tab+')')
      

  6.   


    create proc pr_a
    @sid varchar(50)
    @tab 这边要定义成什么
    as
    select a,b
    from ta
    where a not in
    (select a from @tab
    )
      

  7.   

    对不起楼上的,我写的有问题,我的意思是create proc pr_a
    @sid varchar(50)
    @tab 这边要定义成什么
    as
    select a,b
    from ta
    where a not in
    (select a from @tab
    )
    and b=@sid
      

  8.   

    两个问题需要楼主确认:
    1.@sid没看到有在过中程用.故我在3楼已将其去除.请问@sid要放在哪里?
    2.3楼的代码在调用时可以直接调用动态表名,不知楼主试了没有?
      

  9.   

    把参数@tab 定义为varchar(100)
    还有一个参数 还不知道 你干吗呵呵
      

  10.   


    我想这样的 
    @sid是一个参数,表名是一个参数 我每次执行是 
    只要这样就可以了
    exec pr_a '2008-01','tab1'
    exec pr_a '2008-02','tab2'
      

  11.   

    create proc pr_a
    @sid varchar(50)
    @tab varcahr(100)
    as
    exec('
    select a,b
    from ta
    where a not in
    (select a from '+@tab+'
    )
    and b='+@sid+'')
    这样就行了
      

  12.   

    create proc pr_a
    @sid varchar(50)
    @tab varcahr(100)
    as
    exec('select a,b from ta where a not in (select a from'+@tab+' ) and b='''+@sid+'''')
    就这样
      

  13.   

    create proc pr_a
    @sid varchar(50),
    @tab varcahr(100)
    as
    exec('
    select a,b
    from ta
    where a not in
    (select a from '+@tab+'
    )
    and b='+@sid+'')