最近開発プロセスの次のシナリオが発生しました:現在の状態が、製品(オンライン状態)である場合、データベース製品オフライン状態フィールド及び時間フィールドshelf_timeのgoods_statu内部Oracle製品テーブルは、タイミングタスク製品テーブルの走査タイミングがある、そしてオフライン時は、0(オフライン状態)に現在の時間積未満に変更されていますが、タスクのタイミングがこれを決定するために、クエリのロジックを追加するので、リアルタイム性を保証することはできません、次のソリューションです
(デコードを選択
(CASE
(shelf_time <SYSDATE AND goods_status = '1')THEN -1
goods_statusとして1,0、goods_status) - END)
T_GOODSから
問題を解決するには、OracleのCASE機能の完璧な組み合わせをデコードして使用します。
実質的に以下のようにデコード機能の使用:
デコード(条件値1、値1を返し、値2、値2を返し...値n、Nの戻り値、デフォルト値)
関数の意味は以下のとおりである
。IF条件をTHEN =値が1
RETURN(変換値1)
ELSIF条件THEN = 2値
RETURN(翻訳された値2)
......
ELSIF条件THEN = N-値
RETURN(翻訳された値のN-)
ELSE
RETURN (デフォルト)
END IF
次のようにCASE関数の基本的な使い方は次のとおりです。
ケースshelf_time
ときshelf_time <SYSDATE THEN -1
shelf_timeは0 THEN SYSDATEを=とき
他の1つの終わり