过程中关键字“AS”附近的语法不正确

时间:2011-08-04 13:35:46

标签: sql stored-procedures

为什么我的程序会给我:

Msg 156, Level 15, State 1, Procedure CountAantalModules, Line 10
Incorrect syntax near the keyword 'AS'.

当我试图改变它时?

USE [SomaData]
GO
/****** Object:  StoredProcedure [dbo].[CountAantalModules]    Script Date: 08/04/2011 15:09:09     ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[CountAantalModules]
(
@prodorder as int,
@result int output
)
AS
SET NOCOUNT ON;

SELECT @result = COUNT(ORD.ORDERNUMMER) AS AantalModuleOrders
FROM        Kostenposten AS KP
INNER JOIN Orders AS ORD ON ORD.Ordernummer = KP.Ordernummer
WHERE ((KP.KPNR = '170' AND KP.SOORT='LadeFront' OR KP.SOORT='GlasLadeFront') OR
(KP.KPNR = '250' AND KP.SOORT='LadeFront')) AND ORD.PRODUCTIEORDER = (@prodorder)

5 个答案:

答案 0 :(得分:4)

它对(输出)变量的赋值,因此不能别名,因为它不是结果集中的列。

答案 1 :(得分:2)

您正在设置变量并尝试同时选择它。

我认为不是:

SELECT @result = COUNT(ORD.ORDERNUMMER) AS AantalModuleOrders

你可能只是意味着:

SELECT  COUNT(ORD.ORDERNUMMER) AS AantalModuleOrders

或者可能:

SELECT @result = COUNT(ORD.ORDERNUMMER)

答案 2 :(得分:1)

也许你需要AantalModuleOrders周围的引号,因为它是一个字符串(想要用这个方式命名列):

SELECT COUNT(ORD.ORDERNUMMER) AS 'AantalModuleOrders'

答案 3 :(得分:1)

摆脱AS AantalModuleOrders。您需要count(*)@result的值,因此您无需为该列指定别名,因为技术上没有列

答案 4 :(得分:1)

我不知道是否有必要使用别名AantalModuleOrders,我建议删除别名并使用以下语句:

SELECT @result = COUNT(ORD.ORDERNUMMER)