create procedure sp_me
as
declare @v
select @v=(select somevalue from tb where id=1)
select * from tb2 where v=@v

解决方案 »

  1.   

    create proc p_sin
    as
       declare @address varchar(200)
       select @address = address from t1 where ...
       select * from t2 where address = @address
    go
      

  2.   

    create proc p_test
    as
    select * from(select * from 表) where 1-a
    go
      

  3.   

    --忘了加别名
    create proc p_test
    as
    select * from(select * from 表) a where 1-a
    go
      

  4.   

    create procedure sp_me
    as
    declare @v varchar(2000),@comm varchar
    set @comm=select @a.*,b.* from myTable as a inner join ('+
      @v+') as b on a.key=b.key'
    exec(@comm)
      

  5.   

    “查询结果”,应该通用地表现为“任意SQL查询语句”。放在 where 后边则不具有通用性。这个问题并不简单,可以上溯到软件工程的技术领域——多个查询子系统如何组合形成新的子系统。只有非常“通用、模式化”的解决方法才能被不断重复使用。
      

  6.   

    create procedure sp_me @v varchar(2000) as
    decalre @comm varchar
    set @comm=select @a.*,b.* from myTable as a inner join ('+
      @v+') as b on a.key=b.key'
    exec(@comm)