sqlserver 2000查询数据,实现根据时间查询表名字,如果表名字不存在则返回“表不存在”,如果查询无结果,则返回“查询无结果集”

sqlserver 2000查询数据,实现根据时间查询表名字,如果表名字不存在则返回“表不存在”,如果查询无结果,则返回“查询无结果集”

DECLARE @tableName NVARCHAR(128)  
DECLARE @sql NVARCHAR(4000)  
DECLARE @currentDate NVARCHAR(8)  
DECLARE @rowCount INT  
DECLARE @msg NVARCHAR(255)  
  
-- 获取当前日期的格式 'YYYYMMDD'  
SET @currentDate = CONVERT(NVARCHAR(8), GETDATE(), 112)  

-- 构建表名  
SET @tableName = 'alerm' + @currentDate  
  
-- 初始化消息变量  
SET @msg = '查询结果为空'  
  
-- 尝试构建并执行查询  
BEGIN TRY  
    -- 检查表是否存在  
    IF OBJECT_ID('dbo.' + @tableName) IS NOT NULL  
    BEGIN  
        -- 假设你要查询的列是 Column1, Column2 并且条件是 Column3 = SomeValue  
        -- 并且你想获取最近10分钟的数据(假设你有一个时间戳列 TimestampColumn)  
        SET @sql = N'SELECT @rowCount = COUNT(*) FROM ' + @tableName +  
                   ' WHERE atime >= DATEADD(MINUTE, -10, GETDATE()) '  
  
        -- 使用 sp_executesql 执行查询并获取行数  
        EXEC sp_executesql @sql, N'@rowCount INT OUTPUT', @rowCount OUTPUT  
  
        -- 检查行数是否大于0  
        IF @rowCount > 0  
        BEGIN  
            -- 如果有结果,则再次执行查询以获取实际数据  
            SET @sql = N'SELECT aid, aname FROM ' + @tableName +  
                       ' WHERE atime >= DATEADD(MINUTE, -10, GETDATE()) '  
  
            EXEC(@sql)  
  
            -- 如果到了这里,说明有数据并且已经输出了,不需要设置消息变量  
            SET @msg = NULL  
        END  
        ELSE  
        BEGIN  
            -- 如果没有结果,则设置消息变量  
            SET @msg = '查询结果为空'  
        END  
    END  
    ELSE  
    BEGIN  
        -- 如果表不存在,则设置消息变量  
        SET @msg = '表不存在'  
    END  
END TRY  
BEGIN CATCH  
    -- 如果有其他错误(如权限问题),则捕获异常并设置消息变量  
    SET @msg = ERROR_MESSAGE()  
END CATCH  
  
-- 输出消息(如果设置了的话)  
IF @msg IS NOT NULL  
    PRINT @msg


····
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值