try:CREATE PROCEDURE test_pro
(iBegin IN NUMBER,
 iEnd IN NUMBER,
 summoney OUT NUMBER)
AS 
num1 number;
num2 number;
BEGIN
SELECT SUM(DATAVALUE) into num1
FROM BASICDATAAMR_TAB
WHERE rownum <= iEnd;SELECT SUM(DATAVALUE) into num2
FROM BASICDATAAMR_TAB
WHERE rownum <= iBegin;summoney :=num1-num2;
END;

解决方案 »

  1.   

    你所用的语法是SQL SERVER里边的,在ORACLE里边给变量赋值只能用SELECT COL1 INTO BIANLIANG1
    这种语句
      

  2.   

    SELECT summoney = SUM(DATAVALUE)
    FROM BASICDATAAMR_TAB
    WHERE rownum <= iEnd
    minus
    SELECT summoney = SUM(DATAVALUE)
    FROM BASICDATAAMR_TAB
    WHERE rownum <= iBegin
    ------------------------------
    楼主这段代码想得到什么结果,我觉得在SQLPLUS中执行都不会得到你想要的
      

  3.   

    CREATE PROCEDURE test_pro (iBegin IN NUMBER,iEnd IN NUMBER,summoney OUT NUMBER) is
      i number;
      j number;
    BEGIN
      SELECT SUM(DATAVALUE) into i FROM BASICDATAAMR_TAB WHERE rownum <= iEnd;
      SELECT SUM(DATAVALUE) into j FROM BASICDATAAMR_TAB WHERE rownum <= iBegin;  summoney:=i-j;
    END
      

  4.   

    minus的用法你知道吗?你是想用minus还是"-"减号
      

  5.   

    想得到的结果是:
    iBegin到iEnd行之间DATAVALUE的总量
      

  6.   

    select sum(DATAVALUE) into summoney from (SELECT DATAVALUEFROM BASICDATAAMR_TAB
    WHERE rownum <= iEnd
    minus
    SELECT DATAVALUE FROM BASICDATAAMR_TAB
    WHERE rownum <= iBegin)
      

  7.   

    to:CodeMagic(ErrorDetector) 你的过程有错误
      

  8.   

    那应该是这样的,先用minus取结果集,再用SUM取和
      

  9.   

    SELECT SUM(DATAVALUE)  FROM  BASICDATAAMR_TAB
    WHERE rownum <= 20
    MINUS
    SELECT SUM(DATAVALUE) FROM BASICDATAAMR_TAB
    WHERE rownum <= 11同样可以得到结果的
      

  10.   

    CREATE PROCEDURE test_pro
    (iBegin IN NUMBER,
     iEnd IN NUMBER,
     summoney OUT NUMBER)
    IS 
    i:number;
    j:number;
    BEGIN
    ....
    END你是两个变量相减,怎么用minus?
      

  11.   

    to:CodeMagic(ErrorDetector) is 改 as可以了,多谢,呵呵
      

  12.   

    啊,我的minus 还真是错了呢,刚才验证了,只得到前iEnd之和.