日期:2014-05-18  浏览次数:20389 次

急需 存储过程~~!
(1)为表写一个通用存储过程,传入表具编号(MeterNo)和日期(Dt),可以返回该表的24小时的数据(1—24小时,24条记录),数值(Qty)保留两位小数。


表如下:
DANo(char(32),not null)
MeterNo(char(20),not null)
MeterType(char(4),not null)
DATime(datetime,not null)
LogTime(datetime,not null)
DAType(char(3),null)
Qty(decimal(18,6),not null)
Qty01(decimal(18,6),not null)
Qty02(decimal(18,6),null)
Note(nvarchar(50),null)


(2)Alter PROCEDURE Usp_SpecialMonitorGetDX (
@MeterNo Char(32)
)
as 
Begin
Declare @DATime Datetime;
  Begin 
  set @DATime=(select max(DATime) from SpecialMonitorData where MeterNo=@MeterNo)
   
  select Qty from SpecialMonitorData where Datime=@DATime and MeterNo=@MeterNo
  end
end
Create PROCEDURE Usp_SpecialMonitorGetDX (
@MeterNo Char(32)
)
as 
Begin
Declare @DATime Datetime;
  Begin 
  set @DATime=(select max(DATime) from SpecialMonitorData where MeterNo=@MeterNo)
   
  select Qty from SpecialMonitorData where Datime=@DATime and MeterNo=@MeterNo
  end
end


以这个存储过程为基础, 增加条件判断超过1小时无数据,则发送报警,数据比上一次过大,则发送报警,取最接近当前时间的值

------解决方案--------------------
SQL code


create proc up_t
    @tb varchar(1000)
as
begin
    declare @sql nvarchar(max)='';
    declare @d varchar(20)=convert(varchar(10),getdate(),120);
    set @sql=' select * from ['+@tb+'] where [datetime] between '''+@d+''' and '''+@d+' 23:59:59.997''';
    exec(@sql);
end
-- 在上层用dataset取数据吧。
-- 不清楚你那个值是什么意思