2017-11-26 21 views
-1

私は変数を数値として宣言したいという手続きを持っています。 この変数は、異なる列を使用して計算されます。 計算の出力が負の場合、どのようにその負の値をその変数に保持できますか? ORA-06502:PL/SQL:数値または値のエラー:と私はこのエラーを取得しておく文字番号変換エラーにpl/sql変数に負の値を保持する方法は?

declare 
    out_put_sum number; 
begin 
    with input as(
     select x.id,x.name,sum(case when ... then abs(x.quantity) as running_total 
     from xxxxxx x, yyyyyy y 
     where ...) 
    select i.running_total into out_put_sum 
    from input i; 

    if out_put_sum > 0 then ... 
     else ... 
    end if; 
end; 
+1

正の数値と同じ方法です。 –

+0

このエラーが発生し続けるmsg.ORA-06502:PL/SQL:数値または値のエラー:文字から数値への変換エラー – kkl

+1

これを取得する理由はわかりません。値。しかし、エラーは数値に文字を代入していることを示しています。負の値を変数に保持する方法とは何の関係もありません*。あなたのコードに援助が必要な場合は、**あなたのコードを投稿する**。 –

答えて

1
sum(case when......then abs(x.quantity)as 
      running_total 

ここでは、負の値を示すために'-'||abs(x.quantity)を使用しているならば、やっご遠慮くださいそう。それはそれから文字列を作成します。代わりに-1*abs(x.quantity)を使用してください。

+0

あなたのコメントは良いアドバイスですが、OPが受け取ったエラーについては説明しません。実際、そうするように指示されていなくても、Oracle **は、'1.5 'のような文字列を、対応する数値(*暗黙の変換*)に変換します。たとえば、abs () 'を返します。 – mathguy

関連する問題