【问题标题】:Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作
【发布时间】:2016-03-02 05:15:34
【问题描述】:

我有以下SQL 查询,但是,当我从C# 执行它时,我收到一个错误提示

"子查询返回超过 1 个值。当 子查询遵循 =、!=、、>= 或当子查询用作 一个表达式。”

这是我的代码:

    CREATE PROC spAddEmployee
(
    @empEmail AS VARCHAR(MAX),
    @empLastName AS VARCHAR(MAX),
    @empFirstName AS VARCHAR(MAX),
    @empMgrEmail AS VARCHAR(MAX),
    @projId AS INT,
    @projName AS VARCHAR(MAX),
    @projStatus AS VARCHAR(MAX),
    @projMgr AS VARCHAR(MAX),
    @pdRole AS VARCHAR(MAX),
    @pdShift AS VARCHAR(MAX),
    @pdAccount AS VARCHAR(MAX),
    @pdLvl AS VARCHAR(MAX),
    @pdStatus AS VARCHAR(MAX),
    @projMonth AS VARCHAR(MAX),
    @projYear AS VARCHAR(MAX),
    @projReqFte AS DECIMAL
)
AS
BEGIN
    --Check if the employee already existed.
    DECLARE @isEmpEmailMatch VARCHAR(MAX)
    SET @isEmpEmailMatch = (SELECT COUNT(*) FROM Employees WHERE Emp_Email=@empEmail)
    --Check if the project already existed.
    DECLARE @isProjIdMatch VARCHAR(MAX)
    SET @isProjIdMatch = (SELECT COUNT(*) FROM Projects WHERE Proj_Id=@projId)

    IF @isEmpEmailMatch < 1
        BEGIN
            --Insert data to employees table.
            INSERT INTO Employees (Emp_Email, Emp_LastName, Emp_FirstName, Emp_MgrName, Emp_Created_On, Emp_Updated_At) 
            VALUES (@empEmail, @empLastName, @empFirstName, @empMgrEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

            --Insert data to Employee FTE Allocation Total
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Nov', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Dec', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Jan', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Feb', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Mar', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Apr', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('May', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Jun', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Jul', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Aug', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Sep', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Oct', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Nov', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Dec', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Jan', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Feb', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Mar', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Apr', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('May', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Jun', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Jul', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Aug', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Sep', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            INSERT INTO Employee_FTE_Allocation_Total (ET_FTE_Month, ET_FTE_Year, ET_FTE_Req, Emp_Email, ET_FTE_Created_On, ET_FTE_Updated_At)
            VALUES ('Oct', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @empEmail, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
        END

    IF @isProjIdMatch < 1
        BEGIN
            --Insert data to Projects table.
            INSERT INTO Projects (Proj_Id, Proj_Name, Proj_Status, Proj_MgrName, Proj_Created_On, Proj_Updated_At) 
            VALUES (@projId, @projName, @projStatus, @projMgr, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Jan', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Feb', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Mar', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Apr', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('May', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Jun', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Jul', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Aug', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Sep', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Oct', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Nov', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Dec', CAST(YEAR(GETDATE()) AS VARCHAR(MAX)), 0, @projId)

            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Jan', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Feb', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Mar', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Apr', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('May', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Jun', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Jul', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Aug', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Sep', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Oct', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Nov', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
            INSERT INTO Project_FTE_Allocation_Total (PT_FTE_Month, PT_FTE_Year, PT_FTE_Req, Proj_Id)
            VALUES ('Dec', CAST(YEAR(GETDATE()) + 1 AS VARCHAR(MAX)), 0, @projId)
        END

    -- Insert data to Project Details table.
    INSERT INTO Project_Details (Proj_Id, PD_Role, PD_Level, PD_AccountName, PD_Shift, PD_Status, PD_Created_On, PD_Updated_At)
    VALUES (@projId, @pdLvl, @pdRole, @pdAccount, @pdShift, @pdStatus, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

    --Get the last inserted Project Detail table.
    DECLARE @lastPDId INT
    SET @lastPDId = (SELECT TOP 1 PD_Id FROM Project_Details ORDER BY PD_Id DESC)

    --Insert data to Project FTE Allocation table.
    INSERT INTO Project_FTE_Allocation (P_FTE_Month, P_FTE_Year, P_FTE_Req, PD_Id, P_FTE_Created_On, P_FTE_Updated_At)
    VALUES (@projMonth, @projYear, @projReqFte, @lastPDId, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

    DECLARE @projCurrentTotalFte DECIMAL
    SET @projCurrentTotalFte = (SELECT PT_FTE_Req FROM Project_FTE_Allocation_Total WHERE Proj_Id=@projId AND PT_FTE_Month=@projMonth AND 
    PT_FTE_Year=@projYear)

    DECLARE @projUpdatedTotalFte DECIMAL
    SET @projUpdatedTotalFte = @projCurrentTotalFte + @projReqFte

    UPDATE Project_FTE_Allocation_Total SET PT_FTE_Req=@projUpdatedTotalFte WHERE Proj_Id=@projId AND PT_FTE_Month=@projMonth AND 
    PT_FTE_Year=@projYear

    --Insert data to Employee FTE Allocation Breakdown table.
    INSERT INTO Employee_FTE_Allocation_Breakdown (EB_FTE_Month, EB_FTE_Year, EB_FTE_Req, EB_FTE_Created_On, EB_FTE_Updated_At)
    VALUES (@projMonth, @projYear, @projReqFte, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

    DECLARE @highestEBFTEId INT
    SET @highestEBFTEId = (SELECT TOP 1 EB_FTE_Id FROM Employee_FTE_Allocation_Breakdown ORDER BY EB_FTE_Id DESC)

    DECLARE @getRoleId INT
    SET @getRoleId = (SELECT Role_Id FROM Roles WHERE Role_Name=@pdLvl)

    DECLARE @getLvlId INT
    SET @getLvlId = (SELECT Level_Id FROM Levels WHERE Level_Name=@pdRole)

    DECLARE @getShiftId INT
    SET @getShiftId = (SELECT Shift_Id FROM Shifts WHERE Shift_Name=@pdShift)

    DECLARE @isEmployeeAssignMatch VARCHAR(MAX)
    SET @isEmployeeAssignMatch = (SELECT COUNT(*) FROM Assignments WHERE Emp_Email=@empEmail AND Proj_Id=@projId AND PD_Id=@lastPDId AND EB_FTE_Id=@highestEBFTEId
    AND Role_Id=@getRoleId AND Level_Id=@getLvlId AND Shift_Id=@getShiftId)

    IF @isEmployeeAssignMatch < 1
        BEGIN
            INSERT INTO Assignments (Emp_Email, Proj_Id, PD_Id, EB_FTE_Id, Role_Id, Level_Id, Shift_Id, Assign_Created_On, 
            Assign_Updated_At) VALUES (@empEmail, @projId, @lastPDId, @highestEBFTEId, @getRoleId, @getLvlId, @getShiftId, CURRENT_TIMESTAMP
            , CURRENT_TIMESTAMP)
        END

    DECLARE @currentFte DECIMAL
    SET @currentFte = (SELECT ET_FTE_Req FROM Employee_FTE_Allocation_Total WHERE ET_FTE_Month=@projMonth AND ET_FTE_Year=@projYear AND 
    Emp_Email=@empEmail)

    DECLARE @updatedFte DECIMAL
    SET @updatedFte = @currentFte + @projReqFte

    UPDATE Employee_FTE_Allocation_Total SET ET_FTE_Req=@updatedFte WHERE ET_FTE_Month=@projMonth AND ET_FTE_Year=@projYear AND 
    Emp_Email=@empEmail

    DECLARE @projFTEId INT
    SET @projFTEId = (SELECT P_FTE_Id FROM Project_FTE_Allocation WHERE PD_Id=@lastPDId AND P_FTE_Month=@projMonth AND P_FTE_Year=@projYear)

    DECLARE @projCurrentFte DECIMAL
    SET @projCurrentFte = (SELECT P_FTE_Req FROM Project_FTE_Allocation WHERE P_FTE_Id=@projFTEId)

    DECLARE @multipliedFte DECIMAL
    SET @multipliedFte = @projReqFte * -1.0

    DECLARE @projUpdatedFte DECIMAL
    SET @projUpdatedFte = @projCurrentFte + @multipliedFte

    UPDATE Project_FTE_Allocation SET P_FTE_Req=@projUpdatedFte WHERE P_FTE_Id=@projFTEId

    DECLARE @projTotalCurrentFte DECIMAL
    SET @projTotalCurrentFte = (SELECT PT_FTE_Req FROM Project_FTE_Allocation_Total WHERE Proj_Id=@projId AND PT_FTE_Month=@projMonth AND 
    PT_FTE_Year=@projYear)

    DECLARE @projTotalUpdatedFte DECIMAL
    SET @projTotalUpdatedFte = @projTotalCurrentFte + @multipliedFte

    UPDATE Project_FTE_Allocation_Total SET PT_FTE_Req=@projTotalUpdatedFte WHERE Proj_Id=@projId AND PT_FTE_Month=@projMonth AND 
    PT_FTE_Year=@projYear

END

【问题讨论】:

  • 所以?问题是什么?
  • 问题在于set @foo = (select ... from ... where ...) 语句之一。这些选择语句之一返回了多个记录,这就是错误的原因。
  • 所以,试着从像top 1 这样的查询中只得到一个结果,你只有两条语句需要这样做:SET @projCurrentTotalFte = (SELECT PT_FTE_Req FROM Project_FTE_Allocation_Total WHERE Proj_Id=@projId AND PT_FTE_Month=@projMonth AND PT_FTE_Year=@projYear)DECLARE @projTotalCurrentFte DECIMAL SET @projTotalCurrentFte = (SELECT PT_FTE_Req FROM Project_FTE_Allocation_Total WHERE Proj_Id=@projId AND PT_FTE_Month=@projMonth AND PT_FTE_Year=@projYear)
  • 您知道您可以通过设置日历表并从中进行选择来删除所有这些INSERT 语句。当 C# 程序员编写存储过程时......

标签: c# sql sql-server stored-procedures


【解决方案1】:

尝试修改这些语句:

DECLARE @projCurrentTotalFte DECIMAL
SET @projCurrentTotalFte = (SELECT PT_FTE_Req FROM Project_FTE_Allocation_Total WHERE Proj_Id=@projId AND PT_FTE_Month=@projMonth AND 
PT_FTE_Year=@projYear)

DECLARE @currentFte DECIMAL
SET @currentFte = (SELECT ET_FTE_Req FROM Employee_FTE_Allocation_Total WHERE ET_FTE_Month=@projMonth AND ET_FTE_Year=@projYear AND 
Emp_Email=@empEmail)

我认为错误来自他们,您希望在 = 之后有一个结果,但其中一个返回多个结果

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多