无法在存储过程中添加两个数字。我错过了什么?

时间:2015-06-20 21:56:45

标签: oracle stored-procedures plsql procedure

我在Oracle的SQL Developer中处理存储过程。 存储过程编译,两个循环工作为exepted。 我的问题: 如果我读出像pos这样的单个变量。“AssetValueCHF”它是有意义的,并给了我正确的价值。但是如果我想将它们添加到总值为NULL。

这是存储过程:

   create or replace 
PROCEDURE AVGCLIENTRISKPORFOLIOS (
  customer IN NUMBER,
  avgRisk OUT NUMBER
)AS 
  totalAsset  NUMBER ;
  riskRankXAsset NUMBER ;

BEGIN

      DBMS_OUTPUT.PUT_LINE('Starting...');

  FOR portf IN (SELECT "PortfolioId" FROM "Portfolios" WHERE "CustomerId"=customer) LOOP
    DBMS_OUTPUT.PUT_LINE('Portfolio gefunden');
    FOR pos IN (SELECT "AssetValueCHF","RiskRank" FROM "Positions" WHERE "Portfolio_PortfolioId"=portf."PortfolioId") LOOP

      /*these two lines here are the problem*/
      totalAsset:=totalAsset+pos."AssetValueCHF"; 
      riskRankXAsset:=riskRankXAsset + pos."AssetValueCHF" *pos."RiskRank" ; 

      DBMS_OUTPUT.PUT_LINE('x');   
      DBMS_OUTPUT.PUT_LINE(totalAsset);     

    END LOOP;
  END LOOP;

  avgRisk:=riskRankXAsset/totalAsset;

END AVGCLIENTRISKPORFOLIOS;

这里的输出是: 开始... 投资组合gefunden X X X X X X X X X X Prozess wasdet。

你能帮我吗?

我正在使用Oracle 12.1和Oracle Developer 3.2.20.10

1 个答案:

答案 0 :(得分:1)

好的,omg ...

我工作太久......现在有效:

 totalAsset  NUMBER :=0;
 riskRankXAsset NUMBER :=0;

多数民众赞成是我的错误。