比如我有一条记录通过存储过程插入一个表A,通过该记录的某个字段,假如该字段为1则取表B的记录出来,假如该字段为2则取表C的记录出来,假如该字段为3则取表D的记录出来等等。看一个程序,记录通过一存储过程插入表A后,没找到哪里从表B、C或D中取记录(插入表A的存储过程也没看到去取其它表记录的操作)。(当然,原程序的表间关系更复杂、表更多些)
一般这种思路是怎么设计的?

解决方案 »

  1.   

    declare @Field intif @Field = 1
    insert into 表 select * from B
    if @Field = 2
    insert into 表 select * from C
    if @Field = 3
    insert into 表 select * from Ddeclare @sql varchar(1000)
    set @sql = ''
    select @sql = 'insert into 表 select * from '+case when @Field = 1 then 'B' when @Field = 2 then 'C' else 'D' end
    exec(@sql)
      

  2.   

    如果规则可能经常变化,可以把这个规则保存到表中,如:表A字段名   值   对应的表名
    某字段1  1    B
    某字段1  2    C
    某字段1  3    D
    某字段1  4    E
    然后用动态SQL查询对应的表名中的数据。