【发布时间】:2011-02-11 16:18:59
【问题描述】:
如果您有一个 (Sybase) 存储过程,它执行“选择 * from ... where ...”,它是如何工作的? * 什么时候扩展到所有列?在 sproc 创建时,在 sproc 编译时,执行时等?
我正在使用像这样的 sproc,它没有返回其中一列,这让我认为它是在创建 sproc 时,但我找不到任何参考来确认这一点。
编辑:我已经验证重新编译存储过程不会导致重新评估 * 这几乎证实了我最初的想法,但仍在寻找记录此行为的参考。
【问题讨论】:
-
你能发布你的存储过程吗?
-
您可以随意更改存储过程吗?我通常会避开
select *,这也是原因之一。 -
我不认为它在存储过程创建时,更有可能在它构建执行路径时。
-
@user779 - 您是在视图中使用
SELECT *还是直接在存储过程本身中使用? -
+1 @Martin - 如果您有视图,请确保执行
sp_refreshviews以更新视图定义。
标签: sql database stored-procedures sybase