从视图中获取不同的值

时间:2012-07-09 13:19:37

标签: sql sql-server

我有两张桌子和一张视图。 有内联查询

select * from View_tbl where sector = '04'

但是当我为此

创建存储过程时
create proc spTest
@sector varchar(2)
as
select * from View_tbl where sector = @sector

都返回具有不同值的数据集。 SP返回那些在Main tbl但不在视图中的列。

请提出任何建议

2 个答案:

答案 0 :(得分:1)

如果视图的定义已更改,则可能需要重新编译存储过程。

在存储过程中使用select *时,会将其编译为明确的列列表。对视图定义的后续更改可能不会反映在sp的定义中(取决于其他一些因素和SQL Server的版本)。

通常,我尝试避免存储过程中的select *并明确地编写列列表。这避免了对重新编译的依赖。

create proc spTest
    @sector varchar(2)
as
    select
        col1,
        col2,
        col3
from
    View_tbl
where
    sector = @sector

答案 1 :(得分:0)

我的猜测是你在两个地方偶然发现了SP(检查Master)并且它在错误的数据库中执行SP可能是你的sp的旧版本...可能完全限定你的表与数据库as排序期限测试。