2016/05/10

7.初回ログイン時、パスワード変更画面へリダイレクト :APEX ID/PASSWORD認証機能 - カスタム編 -

  • Steps
    7. 初回ログイン時、パスワード変更画面へリダイレクト
      -Home画面のロード時にパスワード変更画面へリダイレクトさせる
      -初回ログインかどうかは、PWD_EXPIREで判定

     #HOME画面にProcessを追加



     #Source :OWA_UTILのリダイレクトを使う

    DECLARE
    l_flag number := 0;
    BEGIN
    SELECT PWD_EXPIRE into l_flag from USERMASTER WHERE upper(USERNAME) = upper(:APP_USER);
    IF l_flag = 1
    THEN
    htp.init; -- OWA_UTIL呼ぶには必要らしい
    owa_util.redirect_url('f?p=&APP_ID.:4:&APP_SESSION.'); -- &APP_ID.:<page no>:&APP_SESSION.
    apex_application.stop_apex_engine;
    ELSE
    NULL;
    END IF;
    END;

     
     



UPSERT のサンプル - データがあればUPDATE、なければINSERT


  • Goal
    データがあればUPDATE、なければINSERTする。
    APEXのダイナミックアクションでの利用を想定しており、ボタンをクリックした際にプロシージャで呼び出して、テーブルのUPSERTをする。
  • How
    Merge文を使う
    COLUMN1-4がキーで、FlagをUPSERTする
     
  • Source

    PROCEDURE UPSERT_TABLE(C_1 in VARCHAR2,
    C_2 in VARCHAR2,
    C_3 in VARCHAR2,
    C_4 in VARCHAR2)
    as
    BEGIN
    MERGE INTO <TARGET TABLE> A
    USING DUAL --- プロシージャで1件ずつ追加/上書するなら、DUALで可能
    ON (<COLUMN_1> = C_1
    and <COLUMN_2> = C_2
    and <COLUMN_3> = C_3
    and <COLUMN_4> = C_4)
    WHEN matched then
    update set <FLAG> = case <FLAG> when 1 then 0
    when 0 then 1
    END
    WHEN not matched then
    insert(<COLUMN_1>,<COLUMN_2>,<COLUMN_3>,<COLUMN_4>,<FLAG>)
    values(C_1,C_2,C-3,C_4,1);
    end;
    view raw UPSERT.sql hosted with ❤ by GitHub

2016/05/06

6.パスワード変更画面の作成 その3 :APEX ID/PASSWORD認証機能 - カスタム編 -

  • Steps
    3.ボタン押下時のプロセスの追加

     #ボタンには、”ページの送信”の設定のみ

     #データベースアクションはなし

     
     #ページ送信後のプロセスで、FUNCTION CHGPWD を呼び出す
           (3.PASSWORDを変更するFUNCTION で作成)



前年同月比較、前月比較 - 売上日報 SQL


  • Goal
    セールス別に、当月の売上、前年同月、前月を横並びで表示する。レポートのタイミングはオンデマンドを想定しているので、売上明細からSQLで取り出しを行う。
  • How
    1. 月別グルーピング用のフラグを、明細に追加
    2. DECODE文で、必要な値だけサマリー(条件付きサマリー)
    3. GROUP BY ROLLUP で、合計行 を追加
     
  • Source

    -- SALES別売上レポートサンプル
    SELECT CASE WHEN GROUPING(X.SALESNAME)=1 then '[Total]'
    ELSE X.SALESNAME
    END SALESNAME -- [Total] を集計行には表示する
    , SUM(DECODE(X.MFLAG,0,X.AMT,0)) TM --当月
    , SUM(DECODE(X.MFLAG,-1,X.AMT,0)) MOM --先月
    , SUM(DECODE(X.MFLAG,-2,X.AMT,0)) L2M --先先月
    , SUM(DECODE(X.MFLAG,-13,X.AMT,0)) YOY --前年同月
    FROM
    (--- 以下、売上明細の整形, VIEWに切り出すか、MVIEWでどっかにおくべき??
    select A.<GL_DATE> GL_DATE
    , A.<SALES_NAME> SALESNAME
    , A.<AMOUNT> AMT
    -- 月の集計フラグを追加
    , case when to_char(A.<GL_DATE>,'YYYYMM')=to_char(sysdate),'YYYYMM') --当月
    then 0
    when to_char(A.<GL_DATE>,'YYYYMM')=to_char(add_months(sysdate,-1),'YYYYMM') --先月
    then -1
    when to_char(A.<GL_DATE>,'YYYYMM') = to_char(add_months(sysdate,-2),'YYYYMM') --先々月
    then -2
    when to_char(A.<GL_DATE>,'YYYYMM') = to_char(add_months(sysdate,-13),'YYYYMM') --前年同月
    then -13
    ELSE 1
    END MFLAG
    FROM <SALES_LINE> A
    WHERE A.<GL_DATE> >= to_date('01/'||to_char(add_months(sysdate,-13),'MM/YYYY'), 'DD/MM/YYYY')
    ) X
    GROUP BY ROLLUP ( A.<SALES_NAME> ) -- ROLLUPで合計行を追加
    ORDER BY A.<SALES_NAME>
    ;
    view raw YoY_MoM.sql hosted with ❤ by GitHub
    SALESNAME TM MOM L2M YOY
    -------------------------- ---------- ---------- ---------- ----------
    SALES1 1021 518 352 363
    SALES2 58 65 54 46
    SALES3 155 126 123 94
    SALES4 70 47 57 67
    [Total] 1304 756 586 570
    #ちょっと今月売上良すぎだけど...

2016/05/04

6.パスワード変更画面の作成 その2 :APEX ID/PASSWORD認証機能 - カスタム編 -

  • Steps
    2.パスワードの検証プロセスの追加

     #USER_IDが、NULLではない
     #新旧パスワードが一緒ではない
     #新パスワードに空白がない
     #パスワードは8文字以上 :SQL式
     #大文字を1文字以上含む :SQL式
     #小文字を1文字以上含む :SQL式
     #新パスワードと確認用パスワードが一致している
     #USERNAMEが、ログインUSERと一致している :SQL式

    --8文字以上
    length(:P4_NEW_PWD) > 7
    --大文字を1文字以上含む
    nvl(length(:P4_NEW_PWD)-length(regexp_replace(:P4_NEW_PWD,'[[:upper:]]')),1)>0
    --小文字を1文字以上含む
    nvl(length(:P4_NEW_PWD)-length(regexp_replace(:P4_NEW_PWD,'[[:lower:]]')),1)>0
    --USERNAMEとログインしているUSERの名前のチェック
    UPPER(:P4_USERNAME)=UPPER(:APP_USER)




    3.ボタン押下時のプロセスの追加 へ続く

2016/05/03

FinTech革命

FINTECHの文字をよく見るので買ってみた。
SquareのIpadをクルッと回してサイン求められるレジ端末を確かに最近良くみるとは思っていた。クレジットの手数料の値下がりで、現実的に回収業務の効率化、キャシュフローの良化とのトレードオフでの検討をしたい。直販化がさらに進むのか?


FinTech革命~テクノロジーが溶かす金融の常識~(日経BP Next ICT選書)