Stored procedures 无输入参数存储过程-SQL代理作业在“需要输入参数”时失败?
我在纠正没有输入参数的存储过程问题时遇到问题,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
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。