こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Sql developerについての質問

Sql developerについての質問

いつもお世話になります。
私はオラクル初心者で、オラクル11gを使用しています。
現在、Sql developerでpl/sql(ストアドプロシージャー)を
作成しています。
そして、躓いておりますのは、select内の構文で条件式を書いて
いるのですが、そこでコンパイルエラーになってしまっています。
オラクルは、ifではなくdecodeを使うのか、又は条件式の内容が悪いのか
又は長すぎるのかご教示頂きたく、宜しくお願い致します。

            記

decode ((a.最大在庫-(b.場内在庫-b.引当数量))>0,
a.最大在庫-((TRUNC(b.場内在庫/b.入数,0))*b.入数)AS 補充数量,'-'),
(a.最大在庫-(a.最大在庫-((TRUNC(b.場内在庫/b.入数,0))*b.入数))) AS 補充梱包数量,

投稿日時 - 2010-07-23 09:25:53

QNo.6057920

困ってます

質問者が選んだベストアンサー

DECODEの使い方が間違ってるだけなんですが・・
DECODEの中で、比較演算子は使えません。
R11をお使いなら、無理にDECODEを使うよりは、
CASEで書き直したほうがいいと思いますよ。

case
when a.最大在庫-(b.場内在庫-b.引当数量)>0
THEN a.最大在庫-((TRUNC(b.場内在庫/b.入数,0))*b.入数
ELSE '-'
end case AS 補充数量,
(a.最大在庫-(a.最大在庫-((TRUNC(b.場内在庫/b.入数,0))*b.入数))) AS 補充梱包数量,

という感じなんですが・・
疑問符が付くところが数箇所・・
(1)引当済みの在庫は、補充数量に数えなくて良いのか?
(2)補充梱包数量とは、補充数量を入数で割った数なのでは?

想像ですけど・・
case
when a.最大在庫 - (b.場内在庫 - b.引当数量) > 0
THEN a.最大在庫 - (b.場内在庫 - b.引当数量 - mod(b.場内在庫 - b.引当数量,b.入数))
ELSE '-'
end case AS 補充数量,
(a.最大在庫 - (b.場内在庫 - b.引当数量 - mod(b.場内在庫 - b.引当数量,b.入数))) / b.入数 AS 補充梱包数量,

こんな感じかな・・

投稿日時 - 2010-07-24 09:17:46

お礼

ご丁寧なご回答頂きまして、ありがとうございます。
大変助かりました。
今後とも宜しくお願い致します。

投稿日時 - 2010-07-24 10:15:00

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問