Oracleのクエリは、クエリのフィールドの時間に基づいて、ステータスフィールドを変更した場合

        最近開発プロセスの次のシナリオが発生しました:現在の状態が、製品(オンライン状態)である場合、データベース製品オフライン状態フィールド及び時間フィールド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つの終わり

 

  

おすすめ

転載: www.cnblogs.com/wllbdml/p/10978965.html