为什么我的程序会给我:
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)
答案 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)