现在我有这样一个问题,有表a、存储过程a、视图a、b、c,
我往表里填一条数据,同时调用存储过程a,存储过程a又调用视图a,视图a调用视图b,视图b调用视图c,
视图c又调用刚填进去的那条数据,
我发现不论怎么调用,新填进的数据还是没有被调用到,这时怎么回事啊????哪位大哥能帮忙解决一下,非常急~~~~~~

解决方案 »

  1.   

    create table ta(id int)
    go
    create view vc
    as
    select * from ta
    go
    create view vb
    as
    select * from vc
    go
    create view va
    as
    select * from vb
    go
    --select * from va
    create proc pa
    as
    select * from va
    go
    --exec pacreate proc myproc
    as
    insert ta values(1) --插入数据
    exec pa             --同时调用存储过程
    go
    --测试:
    exec myproc
    /*
    id
    ---
    1
    */
    exec myproc
    /*
    id
    ---
    1
    1
    */drop table ta
    drop view va,vb,vc
    drop proc pa,myproc
    测试了一下,没什么问题。
    是不是你的程序逻辑有问题。
      

  2.   

    我不是直接那么写的。表A   表B    存储过程A 存储过程B  视图A 视图B 视图C视图A  
    create view 视图A{
    as
        select * from 视图B
    go}视图B
    create view 视图B{
    as
        select * from 视图C
    go
    }视图C
    create view 视图C{
    as
        select * from 表A
    go
    }存储过程A 
    CREATE proc 存储过程A{
      @a
    }
    as
      insert into 表B(id)
       values( select id from 视图A where id = @a)存储过程B
    create proc 存储过程B{
      @a
    }
    as
      insert into 表A(id) values(@a)  exec(存储过程B)
    这是我那个程序的大概流程。。
      

  3.   


    应该是:
        exec(存储过程A) 
    吧?
      

  4.   

    是。。打错了。时exec(存储过程A)。。本来是想把新数据和以前的数据一起汇总的,可是新数据总是汇总不上去
      

  5.   


    在新增数据后加一句:
    exec sp_refreshview N'视图名'
    试试
      

  6.   

    只sp_refreshview 视图C还是几个视图都刷新??
      

  7.   

    估计你建好表和视图后,
    又对表和某些视图做了架构上的更改,造成嵌套的视图数据不对。你用sp_refreshview把三个视图c,b,a依次刷新一遍,
    再执行你的存储过程试试。