A表          
ID             NUM          CONVERT
1              80          1.1
2              78          2.1
3              29          3.1想要的结果是NUM字段乘以CONVERT字段,得到的返回结果(80*1.1)+(78*2.1)+(29*3.1)请高手教我一下怎么样在函数中得到CONVERT字段的内部,谢谢!

解决方案 »

  1.   

    做個循環               result  number;
                for rec in (select * from A)
               loop
                   result := to_number(rec.num)*to_number(rec.convert)
               end loop;
    大概意思就是這樣~
      

  2.   

    这个很好写啊.
    create or replace function aaa() return number
    is
    total number;
    begin
    select sum(num*convert) into total from a;
    return total;
    end;
    没测试过,你试下看行不行
      

  3.   

    select SUM(AA.plus)
    from (select (NUM * CONVERT) as plus from A表 )AA
      

  4.   

    直接sum(num*convert) 不就行了,还用写什么函数啊
      

  5.   


    给你个代码学习:
    DROP TABLE b;
    CREATE TABLE b (ID int,num NUMBER,CONVERT NUMBER);
    INSERT INTO b VALUES(1,80,1.1);
    INSERT INTO b VALUES(2,78,2.1);
    INSERT INTO b VALUES(3,29,3.1);
    COMMIT;
    SELECT * FROM b;CREATE OR REPLACE FUNCTION G(vID NUMBER) RETURN VARCHAR2 AS
      R_STR VARCHAR2(20);
    BEGIN
      SELECT '(' || NUM || '*' || CONVERT || ')'
        INTO R_STR
        FROM B
       WHERE ID = vID
         AND ROWNUM = 1;
      RETURN R_STR;
    END;
    SELECT g(1)||'+'||g(2)||'+'||g(3) FROM dual;
      

  6.   

    如果是在sqlplus中执行,需要给“/”啊。常识。DROP TABLE b;
    CREATE TABLE b (ID int,num NUMBER,CONVERT NUMBER);
    INSERT INTO b VALUES(1,80,1.1);
    INSERT INTO b VALUES(2,78,2.1);
    INSERT INTO b VALUES(3,29,3.1);
    COMMIT;
    SELECT * FROM b;CREATE OR REPLACE FUNCTION G(vID NUMBER) RETURN VARCHAR2 AS
      R_STR VARCHAR2(20);
    BEGIN
      SELECT '(' || NUM || '*' || CONVERT || ')'
        INTO R_STR
        FROM B
       WHERE ID = vID
         AND ROWNUM = 1;
      RETURN R_STR;
    END;
    /SELECT g(1)||'+'||g(2)||'+'||g(3) FROM dual;