2012-09-12 63 views
0

最後,我正在用存儲過程弄溼我的腳,並且需要我的第一個幫助。SQL Server存儲過程中的邏輯和檢查表

我得到了基本的佈局,並建立了一個SP,它除了設置兩個變量並選擇它們,不返回任何信息。

權的歷史,我有兩個主要記錄表tblRecordsCurrent (RecordID)tblRecordsHistorical (RecordID)以及父表到兩個tblDataSet (DatasetID)具有標誌dsCurrent

每天我使用新的DataSetID將5000條記錄上傳到tblRecordsCurrent。當我上傳一個新的數據集時,前一天的數據集(5000條記錄)被移至tblRecordsHistorical,並且tblDataSet表中的DSCurrent標誌被更新爲False。

我將爲StoredProcedure提供一個DataSetID以移動目標(「C」或「H」表示Current/Historical)。首先,我需要檢查DataSetID是否存在,然後是否存在與DataSetID相關的tblRecordsCurrent/Historical中的任何記錄。

1 - 我如何找出如果datasetID所存在的,這我相信會是一個SELECT COUNT(*) from tblDataSet where [email protected],但怎麼是,實施,我只是做:

@DataSetExistCount=SELECT COUNT(*) from tblDataSet where [email protected] 
if @DataSetExistCount== then 
    @errCount = @errCount + 1 
else 
    >>> MORE LOGIC <<< 
END 

編輯:

這是極大的樂趣,開始我的存儲過程,我現在已經在一個單獨的基於錯誤捕獲問題發表如果有人是在存儲過程感興趣的複雜的嵌套邏輯:

Error Handling in SQL Server Stored Procedures

回答

2

你剛纔檢查,看看是否存在:

If Exists (select 1 from tblDataSet where DataSetID = @dataSet) 
begin 
    -- Do your move logic 
end 
else 
begin 
    -- Doesn't exist so do something else 
end 
+0

這是偉大的,謝謝。我從其他來源獲得了一些信息,並會發布我的最終代碼,以向任何讀者展示,哪些是可能的。直到那時我纔會接受答案。 – aSystemOverload

+0

與以往一樣,這些模式=>這不是線程安全的。 –