莫非你的函数还调用数据库?并且数据量也很大?不然怎么会这么慢的,你的具体内容写出来看看。

解决方案 »

  1.   

    具体问题具体分析啦,你一点数据不贴出来,计算公式也不知道是怎么写的,怎么可以知道是由什么原因造成的~
      

  2.   

    函数是根据传进来的主键字段的值,去找前一条记录,取出要的数据然后计算
      

  3.   

    计算列是表中的虚拟列,其值在运行时计算得到。
      

  4.   

    函数是根据传进来的主键字段的值,去找前一条记录,取出要的数据然后计算
      

  5.   

    CREATE FUNCTION DBO.FUN_AAA_DRJC (@DW   VARCHAR(100),
                                         @JH   VARCHAR(100),
                                         @HBRQ DATETIME,
                                         @DRJS NUMERIC(7,2))  
    RETURNS NUMERIC(7,2) ASBEGIN 
       DECLARE
         @QRJS  NUMERIC(7,2),  
         @QDATE DATETIME,      --上一次的记录时的日期
         @DDATE DATETIME,      --本次记录时的日期          
         @DRJC  NUMERIC(7,2)   
        
       IF (SELECT COUNT(*) FROM AAA WHERE DW = @DW AND JH = @JH AND HBRQ < @HBRQ AND DRJS IS NOT NULL AND DRJS <> 0) > 0
       BEGIN
          SET @QRJS = (SELECT DRJS
       FROM AAA
       WHERE DW = @DW AND
                             JH = @JH AND
                             HBRQ =(SELECT MAX(HBRQ)
                                    FROM AAA
                                    WHERE DW = @DW AND
                                          JH = @JH AND
                                          HBRQ < @HBRQ AND
                                          DRJS IS NOT NULL AND
                                          DRJS <> 0) )

          IF @QRJS > @DRJS
             SET @DRJC = 0
          ELSE
             SET @DRJC = @DRJS - @QRJS
       END
       ELSE
         SET @DRJC = @DRJS
       --==========================
       RETURN(@DRJC)
    END
      

  6.   

    查询出来的数据就是整个表的所有数据