从存储过程中的视图中选择时不能使用 ORDER BY
Posted
技术标签:
【中文标题】从存储过程中的视图中选择时不能使用 ORDER BY【英文标题】:Can't use ORDER BY when SELECTing from a view in a stored procedure 【发布时间】:2012-08-26 09:37:31 【问题描述】:我有一个视图,虽然我可以执行此语句而不会出现任何错误:
SELECT * from vwShippingNoticeBase
order by InvoiceNum
当我尝试用这个完全相同的语句创建一个存储过程时,我得到一个错误:
create PROCEDURE [dbo].[upSELECT_shippingNoticeOrderByInvoiceNum]
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM vwShippingNoticeBase
order by invoiceNum
错误:
消息 102,级别 15,状态 1,程序 upSELECT_shippingNoticeByDateRange,第 7 行 'invoiceNum' 附近的语法不正确。
很奇怪!
【问题讨论】:
【参考方案1】:如何将END
添加到您的存储过程中......
CREAT PROCEDURE [dbo].[upSELECT_shippingNoticeOrderByInvoiceNum]
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM vwShippingNoticeBase
ORDER BY invoiceNum
END -- <<<==== you're missing the END for the BEGIN you have!
【讨论】:
天哪。谢谢!我已经注释掉了一些行并且没有将我的 END 移回顶部。非常感谢! @MaxHodges:只要有足够的眼球,所有的错误都会变得浅薄:-) 给出的错误信息稍微多一些,所有错误都在浅层之前;) @MaxHodges: 嗯 - 消息绝对 100% 正确 - 你的语法无效,在InvoiceNum
附近 - 你错过了 END
:-) 写作 good 错误消息比编程本身更像是一门艺术......以上是关于从存储过程中的视图中选择时不能使用 ORDER BY的主要内容,如果未能解决你的问题,请参考以下文章