【问题标题】:Logic and Checking Tables within SQL Server Stored ProceduresSQL Server 存储过程中的逻辑和检查表
【发布时间】:2012-09-13 17:29:16
【问题描述】:

我终于开始接触存储过程了,我的第一个过程需要一点帮助。

我得到了基本布局并设置了一个 SP,它只设置两个变量并选择它们,不返回任何信息。

正确的历史记录,我有两个主记录表 tblRecordsCurrent (RecordID)tblRecordsHistorical (RecordID) 以及一个父表 tblDataSet (DatasetID) 有一个标志 dsCurrent

我每天使用新的 DataSetID 将 5000 条记录上传到 tblRecordsCurrent。当我上传一个新数据集时,前一天的数据集(5000 条记录)被移动到 tblRecordsHistorical 并且 tblDataSet 表中的 DSCurrent 标志更新为 False。

我将向 StoredProcedure 提供一个要移动的 DataSetID,以及目标(当前/历史的“C”或“H”)。首先我需要检查 DataSetID 是否存在,然后在相关的 tblRecordsCurrent/Historical 中是否有任何记录与 DataSetID。

1 - 我如何确定 DataSetID 是否存在,我假设它是 SELECT COUNT(*) from tblDataSet where DataSetID=@DataSet,但它是如何实现的,我只是这样做:

@DataSetExistCount=SELECT COUNT(*) from tblDataSet where DataSetID=@DataSet
if @DataSetExistCount== then
     @errCount = @errCount + 1
else
   >>> MORE LOGIC <<<
END

编辑:

这是我的存储过程的一个很好的开始,如果有人对存储过程中的复杂嵌套逻辑感兴趣,我现在将其发布在一个单独的基于错误捕获的问题下:

Error Handling in SQL Server Stored Procedures

【问题讨论】:

    标签: sql-server sql-server-2008 stored-procedures


    【解决方案1】:

    你只需检查它是否存在:

    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
    

    【讨论】:

    • 太好了,谢谢。我从其他来源获得了一些信息,并将发布我的最终代码以向任何可能的读者展示什么是可能的。到那时我不会接受答案。
    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多