Haben Sie ein Problem mit Variablen in einer gespeicherten Prozedur.SQL 2008 Setze Variable Select Anweisung Fehler
Ich erhalte immer Fehler:
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".
Die zweite Variable (@CurrentVersion) ist das Problem ein. Ich habe zunächst das Verfahren ohne dieses erstellt und es war in Ordnung. Jetzt muss ich es aktualisieren, aber es wird einfach nicht die zweite Variable akzeptieren, die ich versuche, ihren Wert mit einer Select-Anweisung zu setzen.
Ich habe Runde und Runde mit Posts hier und alle möglichen anderen Seiten versuchen "Set", "Select" herumspielen mit der Formatierung auf dem Weg, aber haben sich nichts einfallen lassen.
Dies ist die komplette Prozedur, jede Hilfe sehr geschätzt wie immer.
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
Dank glücklich! Dachte, es wäre etwas wirklich einfaches! – DA082
@ DA082 Gut zu helfen. Vergessen Sie nicht, es als ans und als UP-Vote zu markieren. Damit es für diese Frage keine Mehrfachantworten gibt. – Lucky