1、编写一个存储过程。
2、需要定义如下参数:
@SOP AS CHAR(10),     操作内容
@ITYPE AS  INT,       操作种类
@ISERNO AS  INT,      序号
@SID AS  INT,       传入的外部ID值
@LVAL  AS   CHAR(80)  值3、传入的值为电压值,范围0——30000
4、在电压值>=100时,视为精炼开始精炼,此时需要写入精炼开电时刻,如下
insert into wl_lf_gy(modified,val,ltime,ctype) values(1,0,convert(varchar(100),getdate(),20),@ISERNO*100+3)。
在电压<100时,视为精炼停止加热,此时需要写入精炼停电时刻,如下:
insert into wl_lf_gy(ltime,ctype,val,modified) values(convert(varchar(100),getdate(),20),@ISERNO*100+6,0,1)5、此过程为外部程序循环调用,每次调用1次,传入参数中定义的值。
6、可建立其它表或其他方式进行数据暂存。

解决方案 »

  1.   

    sql server 的得等水哥来解决
      

  2.   


    CREATE PROCEDURE PROC_MU(
    @SOP AS CHAR(10), --操作内容
    @ITYPE AS INT, --操作种类
    @ISERNO AS INT, --序号
    @SID AS INT, --传入的外部ID值
    @LVAL AS CHAR(80) --值
    )
    AS
    BEGIN
    IF NOT  @LVAL BETWEEN 0 AND 30000SELECT '电压值超出范围'
    ELSEBEGIN
    IF @LVAL>=100
    insert into wl_lf_gy(modified,val,ltime,ctype) values(1,0,convert(varchar(100),getdate(),20),@ISERNO*100+3)
    ELSE
    insert into wl_lf_gy(ltime,ctype,val,modified) values(convert(varchar(100),getdate(),20),@ISERNO*100+6,0,1)
    ENDEND
      

  3.   

    create proc p_proc
    (
    @SOP AS varCHAR(10),-- 操作内容
    @ITYPE AS INT, --操作种类
    @ISERNO AS INT, --序号
    @SID AS INT, --传入的外部ID值
    @LVAL AS varCHAR(80) --值
    )
    asset nocount on
    set xact_abort onbegin tran
    if @LVAL>=100
    begin
    insert into wl_lf_gy(modified,val,ltime,ctype) values(1,0,convert(varchar(100),getdate(),20),@ISERNO*100+3)
    end
    else
    begin
    insert into wl_lf_gy(ltime,ctype,val,modified) values(convert(varchar(100),getdate(),20),@ISERNO*100+6,0,1)
    end
    commit transet xact_abort off
    set nocount off
      

  4.   

    create proc my_proc
    @SOP CHAR(10),
    @ITYPE INT, 
    @ISERNO INT, 
    @SID INT, 
    @LVAL CHAR(80)
    as
    begin
      if @LVAL >= 100
         insert into wl_lf_gy(modified,val,ltime,ctype) values(1,0,convert(varchar(19),getdate(),120),@ISERNO*100+3)
      else
         insert into wl_lf_gy(ltime,ctype,val,modified) values(convert(varchar(19),getdate(),120),@ISERNO*100+6,0,1)
    end
      

  5.   

    另外建议你不要在存储过程中用getdate(),而是把getdate()做为变量(参数)传进去。create proc my_proc
    @SOP CHAR(10),
    @ITYPE INT, 
    @ISERNO INT, 
    @SID INT, 
    @LVAL CHAR(80),
    @currentdate datetime
    as
    begin
      if @LVAL >= 100
         insert into wl_lf_gy(modified,val,ltime,ctype) values(1,0,convert(varchar(19),@currentdate,120),@ISERNO*100+3)
      else
         insert into wl_lf_gy(ltime,ctype,val,modified) values(convert(varchar(19),@currentdate,120),@ISERNO*100+6,0,1)
    end
      

  6.   

    版主就是厉害create proc my_proc
    @SOP CHAR(10),
    @ITYPE INT,  // 把这些参数用一个字符串传进来,可以一次传近来100个以上的数据,而省去100次打开关闭数据库的过程,是不是效率更高
    @ISERNO INT, 
    @SID INT, 
    @LVAL CHAR(80),
    @currentdate datetime
    as
    begin
      if @LVAL >= 100
         insert into wl_lf_gy(modified,val,ltime,ctype) values(1,0,convert(varchar(19),@currentdate,120),@ISERNO*100+3)
      else
         insert into wl_lf_gy(ltime,ctype,val,modified) values(convert(varchar(19),@currentdate,120),@ISERNO*100+6,0,1)
    end