Stored procedures 无输入参数存储过程-SQL代理作业在“需要输入参数”时失败?

Stored procedures 无输入参数存储过程-SQL代理作业在“需要输入参数”时失败?,stored-procedures,sql-server-2012,sql-agent-job,sql-agent,Stored Procedures,Sql Server 2012,Sql Agent Job,Sql Agent,我在纠正没有输入参数的存储过程问题时遇到问题,SQL代理作业中失败,需要输入参数 任何想法或简单的解决方案!哈哈 这是代理的工作电话: Exec e3.dbo.storedprocedure_name 以下是存储过程: CREATE PROCEDURE [dbo].[storedprocedure_name] @EmpNo NCHAR(10) Output, @EmpLN NCHAR(50) Output, @EmpFN NCHA

我在纠正没有输入参数的存储过程问题时遇到问题,SQL代理作业中失败,需要输入参数

任何想法或简单的解决方案!哈哈

这是代理的工作电话:

    Exec e3.dbo.storedprocedure_name
以下是存储过程:

    CREATE PROCEDURE [dbo].[storedprocedure_name]
        @EmpNo NCHAR(10) Output,
        @EmpLN NCHAR(50) Output,
        @EmpFN NCHAR(50) Output,
        @FOB BIT Output,
        @SecAcc BIT Output,
        @Network BIT Output,
        @VPN BIT Output,
        @Email BIT Output,
        @Printer BIT Output,
        @Fuel BIT Output,
        @BSTC BIT Output,
        @Accounts BIT Output,
        @Telephone BIT Output,
        @Alarm BIT Output,
        @EZPass1 BIT Output,
        @EZPass2 BIT Output,
        @EmpReqID INT Output,
        @ReqDate DATETIME Output
    AS
    BEGIN
        SET NOCOUNT ON;

    -- Check FOB Change Request
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND ERA.Emp_DtAudStep_Complete <= dateadd(day,-1,GETDATE())
     AND (ERA.Emp_FOBadge           <> E.Emp_CA_Badge_No1) 
      OR (ERA.Emp_FOBadge           <> E.Emp_CA_Badge_No1)
     )
        SET @FOB    = 'True'
    ELSE
        SET @FOB    = 'False'

    -- Check Secondary Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND   ERA.Emp_DtAudStep_Complete       <= dateadd(day,-1,GETDATE())
     AND  (ERA.Emp_Sec_Access   = 'True') AND (EA.EA_Sec_CA     = 'False') 
     )
        SET @SecAcc = 'True'
    ELSE
        SET @SecAcc = 'False'

    -- Check Network Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND   ERA.Emp_DtAudStep_Complete       <= dateadd(day,-1,GETDATE())
     AND  (ERA.Emp_NetworkID   <> 'True') AND (EA.EA_Network        = 'False') 
     )
        SET @Network = 'True'
    ELSE
        SET @Network = 'False'

    -- Check VPN Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND   ERA.Emp_DtAudStep_Complete    <= dateadd(day,-1,GETDATE())
     AND  (ERA.Emp_VPN = 'True') 
     AND (EA.EA_VPN    = 'False') 
    )
        SET @VPN = 'True'
    ELSE
        SET @VPN = 'False'

    -- Check EMAIL Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND  ERA.Emp_DtAudStep_Complete     <= dateadd(day,-1,GETDATE())
     AND (ERA.Emp_Email = 'True') 
     AND (EA.EA_Email   = 'False') 
     )
        SET @Email = 'True'
    ELSE
        SET @Email = 'False'

    -- Check Local Printer Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND  ERA.Emp_DtAudStep_Complete     <= dateadd(day,-1,GETDATE())
     AND (ERA.Emp_LocalPrinter = 'True') 
     AND (EA.EA_Printer        = 'False') 
     )
        SET @Printer = 'True'
    ELSE
        SET @Printer = 'False'

    -- Check FuelSystem Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND  ERA.Emp_DtAudStep_Complete     <= dateadd(day,-1,GETDATE())
     AND (ERA.Emp_FuelSystem = 'True') 
     AND (EA.EA_FuelSystem   = 'False') 
     )
        SET @Fuel = 'True'
    ELSE
        SET @Fuel = 'False'

    -- Check BSTC Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND  ERA.Emp_DtAudStep_Complete     <= dateadd(day,-1,GETDATE())
     AND (ERA.Emp_BSTC = 'True') 
     AND (EA.EA_BSTC   = 'False') 
     )
        SET @BSTC = 'True'
    ELSE
        SET @BSTC = 'False'

    -- Check Misc Accounts Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND   ERA.Emp_DtAudStep_Complete    <= dateadd(day,-1,GETDATE())
     AND  (ERA.Emp_Accounts    <> '')    
     AND (EA.EA_Accounts        = '0'    OR  EA.EA_Accounts     = '')
    )
        SET @Accounts = 'True'
    ELSE
        SET @Accounts = 'False'

    -- Check Alarm Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND  ERA.Emp_DtAudStep_Complete     <= dateadd(day,-1,GETDATE())
     AND (ERA.Emp_Alarm = 'True') 
     AND (EA.EA_Alarm = 'False') 
     )
        SET @Alarm = 'True'
    ELSE
        SET @Alarm = 'False'

    -- Check Telephone Access 
    If Exists 
    (
    SELECT ERA.Emp_LastName AS [@EmpLN], ERA.Emp_FirstName AS [@EmpFN], ERA.Emp_DtAudStep_Complete AS [@ReqDate], ERA.Emp_ReqID as [@EmpReqID]
    FROM   [e3].[dbo].E3_Emp_ReqAudit AS ERA INNER JOIN
           [e3].[dbo].E3_Emp_Access   AS EA ON ERA.Emp_AB_No = EA.EA_AB_No INNER JOIN
           [e3].[dbo].E3_Employee     AS E  ON ERA.Emp_AB_No = E.Emp_AB_No
    WHERE (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
       OR (ERA.Emp_Req_Action = 'E1') AND (ERA.Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True') 
      AND (ERA.Emp_DtAudStep_Complete =
                    (SELECT  MAX(Emp_DtAudStep_Complete) AS Expr1
                      FROM   [e3].[dbo].E3_Emp_ReqAudit AS E3_Emp_ReqAudit_1
                      WHERE (Emp_AB_No = EA.EA_AB_No) 
                        AND (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '5') AND (ERA.Emp_Contractor = 'False') 
                         OR (Emp_Req_Action = 'E1') AND (Emp_AudStep_Completed = '2') AND (ERA.Emp_Contractor = 'True'))) 
     AND  ERA.Emp_DtAudStep_Complete     <= dateadd(day,-1,GETDATE())
     AND (ERA.Emp_Telephone = 'True') 
     AND (EA.EA_Telephone   = 'False') 
     )
        SET @Telephone = 'True'
    ELSE
        SET @Telephone = 'False'
    END

密码代码是好的。向我们显示对存储过程的调用,如果可能,还显示存储过程的代码。可能的问题:该过程是否调用其他过程?在不同架构下的数据库中是否有多个同名过程,而您调用的是错误的过程?此存储过程不调用任何其他过程,并且名称在数据库中是唯一的。使用指定的所有输出参数调用这些过程如何?我不确定是否理解您的调用…Exec e3.dbo.storedproc_name@EmpNo,…等等???好吧…我猜是代理的存储过程调用。根据TT,需要在SP的exec中声明和调用参数。标准T-SQL。