【发布时间】:2016-07-04 11:49:26
【问题描述】:
存储过程中的变量有问题。
我不断收到错误:
Msg 156, Level 15, State 1, Procedure SP_ProjectData, Line 6
Incorrect syntax near the keyword 'SELECT'.
Msg 137, Level 15, State 1, Procedure SP_ProjectData, Line 6
Must declare the scalar variable "@CurrentVersion".
第二个变量(@CurrentVersion)是问题之一。我最初创建了没有那个程序的程序,这很好。现在我需要更新它,但它不会接受我尝试使用 select 语句设置其值的第二个变量。
我一直在使用这里的帖子和各种其他网站尝试“设置”,“选择”一路玩弄格式,但一无所获。
这是完整的过程,任何帮助都非常感谢。
USE [ic_intranet]
GO
/****** Object: StoredProcedure [dbo].[SP_ProjectData] Script Date: 07/04/2016 12:29:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_ProjectData]
@ProjectRef int,
@CurrentVersion decimal(4, 2)
SELECT @CurrentVersion = VersionNumber FROM t_ProjectEquipmentVersions WHERE CurrentVersion = 'true' and JobNumber = @ProjectRef
AS
SELECT
t_Projects.JobNumber,
t_Projects.JobName,
t_Projects.ProjectType,
t_Projects.ProjectStatus,
t_Projects.JobCode,
t_Projects.TargetCompleteDate,
t_Projects.ActualFinishDate,
t_Projects.LocationCountry,
t_Projects.LocationTown,
t_Projects.SoldDate,
(SELECT SUM(ProjectGBPCost) FROM dbo.t_ProjectEquipment WHERE (JobNumber = @ProjectRef)) AS TotalValueBuy,
(SELECT SUM(ProjectGBPRetail) FROM dbo.t_ProjectEquipment WHERE (JobNumber = @ProjectRef)) AS TotalValueSell,
(SELECT COUNT(Ordered) FROM dbo.t_ProjectEquipment WHERE (Ordered = '1' and JobNumber = @ProjectRef) GROUP BY Ordered) AS OrderedItems,
(SELECT SUM(ProjectGBPCost) FROM dbo.t_ProjectEquipment WHERE (Ordered = '1' and JobNumber = @ProjectRef)) AS OrderedValueBuy,
(SELECT SUM(ProjectGBPRetail) FROM dbo.t_ProjectEquipment WHERE (Ordered = '1' and JobNumber = @ProjectRef)) AS OrderedValueSell,
(SELECT COUNT(Ordered) FROM dbo.t_ProjectEquipment WHERE (Ordered = '0' and JobNumber = @ProjectRef) GROUP BY Ordered) AS NotOrderedItems,
(SELECT SUM(ProjectGBPCost) FROM dbo.t_ProjectEquipment WHERE (Ordered = '0' and JobNumber = @ProjectRef)) AS NotOrderedValueBuy,
(SELECT SUM(ProjectGBPRetail) FROM dbo.t_ProjectEquipment WHERE (Ordered = '0' and JobNumber = @ProjectRef)) AS NotOrderedValueSell,
t_EmployeeProjectManager.Firstname AS ProjectManagerFirstname,
t_EmployeeProjectManager.Surname AS ProjectManagerSurname,
t_EmployeeLeadEngineer.Firstname AS LeadEngineerFirstname,
t_EmployeeLeadEngineer.Surname AS LeadEngineerSurname,
t_EmployeeSalesRep.Firstname AS SalesRepFirstname,
t_EmployeeSalesRep.Surname AS SalesRepSurname,
t_EmployeeDesigner.Firstname AS DesignerFirstname,
t_EmployeeDesigner.Surname AS DesignerSurname
FROM t_Projects
LEFT JOIN t_Employee AS t_EmployeeProjectManager ON t_Projects.ProjectManager = t_EmployeeProjectManager.ID
LEFT JOIN t_Employee AS t_EmployeeLeadEngineer ON t_Projects.LeadEngineer = t_EmployeeLeadEngineer.ID
LEFT JOIN t_Employee AS t_EmployeeSalesRep ON t_Projects.SalesRep = t_EmployeeSalesRep.ID
LEFT JOIN t_Employee AS t_EmployeeDesigner ON t_Projects.Designer = t_EmployeeDesigner.ID
WHERE JobNumber = @ProjectRef
【问题讨论】:
标签: sql sql-server-2008 stored-procedures