2016-01-28 125 views
1

我正試圖探索從存儲過程中進行選擇的可能性。從存儲過程輸出中選擇

像這樣的事情

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

參數值( 'SampleJob')傳遞給你的SP並返回結果。 –

+2

使用臨時表。見http://stackoverflow.com/questions/653714/insert-results-of-a-stored-procedure-into-a-temporary-table –

+0

有沒有辦法做到這一點,而不必創建任何臨時表? – Darren

回答

1

如果您想創建某些內容,但擔心它可能已經存在,請使用try/catch塊。

begin try 
    exec dbo.sp_add_job . . . 
end try 
begin catch 
    print 'Error encountered . . . job probably already exists' 
end catch; 

說實話,我還沒有做過這個工作/工作步驟。但是,這是重新創建表格,視圖等的一種方式。

1

根據sp_help_job的文檔MSDN此存儲過程有一個@job_name參數和一個簡單的返回碼(0 =成功或1 =失敗)。

如果您在撥打sp_help_job時設置了@job_name參數並獲取返回代碼,您應該能夠測試返回代碼的值以完成您想要的操作。

像這樣的東西應該工作:

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