- PR -

PL/SQLでDECODEを使う場合

1
投稿者投稿内容
まな
常連さん
会議室デビュー日: 2005/10/26
投稿数: 45
投稿日時: 2006-04-07 18:45
PL/SQLでこのような式の値を、引数3という変数に代入したいのですが、エラーが出ます。
なにか良い方法はありますでしょうか。

引数1、引数3・・・テーブルG001の列。
M001・・・テーブル名。
引数3 := DECODE(引数1, 1, DECODE(M001.aa, 1, 11, 2, 12, 3, 13),
2, DECODE(M001.bb, 1, 21, 2, 22),
3, DECODE(M001.cc, 1, 31, 2, 32, 3, 33),
4, DECODE(M001.dd, 1, 51, 3, 53),
5, DECODE(M001.ee, 1, 71),
6, DECODE(M001.ff, 1, 61, 2, 62),
7, DECODE(M001.gg, 1, 41, 3, 43),
9, 99);
mogumogu
常連さん
会議室デビュー日: 2006/02/24
投稿数: 32
投稿日時: 2006-04-08 21:58
どういうエラーがでますか?
また、SQLの全文を載せていただけるとわかりやすくなります。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-04-10 13:54
PL/SQLブロックでDECODEを使おうとしたら
コード:
PLS-00204: function or pseudo-column 'DECODE' may be used inside a SQL statement only


が出たので、これと同じエラーが出たと仮定したばあい、
DECODEをSQLステートメント内で使用し、INTOを用いて代入すれば
解決するかと思います。

↓サンプル
コード:
set serveroutput on
DECLARE
 test_param char(1) ;
 test_value varchar(100) ;
begin
	test_param := '1' ;
	select DECODE(test_param,1,'A',2,'B','C') into test_value from dual ;
	dbms_output.put_line(test_value);
end;
/

(出力結果)
===============================================================
A
===============================================================




#WinXP + Oracle10gExで動作確認
1

スキルアップ/キャリアアップ(JOB@IT)