我正在尝试探索从存储过程中进行选择的可能性。
像这样的东西
SELECT name
FROM exec msdb..sp_help_job
WHERE name = 'SampleJob'
我理解SQL Server - SELECT FROM stored procedure可以使用用户定义的函数或视图,但这些不适合我。
原因是由于AWS-RDS上的权限限制,我无法运行以下SQL语句。
SELECT name as Jobs
FROM msdb..sysjobs
这让我别无选择,只能使用msdb..sp_help_job
。
我最终想要实现的是“如果未创建作业,则运行创建作业脚本”。我需要从存储过程中选择的原因是查看作业是否存在。
感谢任何建议/指示。
答案 0 :(得分:1)
如果您想创建某些内容,但担心它可能已存在,请使用try
/ catch
块。
begin try
exec dbo.sp_add_job . . .
end try
begin catch
print 'Error encountered . . . job probably already exists'
end catch;
老实说,我还没有完成工作/工作步骤。但是,这是重新创建表,视图等的一种方法。
答案 1 :(得分:1)
根据MSDN上sp_help_job
的文档,此存储过程具有@job_name
参数和简单的返回码(0 =成功或1 =失败)。
如果您在调用@job_name
时设置sp_help_job
参数并获取返回代码,则应该能够测试返回代码的值以完成您想要的操作。
这样的事情应该有效:
DECLARE @return_value int
EXEC @return_value = msdb..sp_help_job @job_name = 'MyJobName'
-- @return_value = 1 means the specified @job_name does not exist
IF @return_value = 1
BEGIN
-- run create job script
END