现在我有这样一个问题,有表a、存储过程a、视图a、b、c,
我往表里填一条数据,同时调用存储过程a,存储过程a又调用视图a,视图a调用视图b,视图b调用视图c,
视图c又调用刚填进去的那条数据,
我发现不论怎么调用,新填进的数据还是没有被调用到,这时怎么回事啊????哪位大哥能帮忙解决一下,非常急~~~~~~
我往表里填一条数据,同时调用存储过程a,存储过程a又调用视图a,视图a调用视图b,视图b调用视图c,
视图c又调用刚填进去的那条数据,
我发现不论怎么调用,新填进的数据还是没有被调用到,这时怎么回事啊????哪位大哥能帮忙解决一下,非常急~~~~~~
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
测试了一下,没什么问题。
是不是你的程序逻辑有问题。
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)
这是我那个程序的大概流程。。
应该是:
exec(存储过程A)
吧?
在新增数据后加一句:
exec sp_refreshview N'视图名'
试试
又对表和某些视图做了架构上的更改,造成嵌套的视图数据不对。你用sp_refreshview把三个视图c,b,a依次刷新一遍,
再执行你的存储过程试试。