【Oracle】PL/SQLでのIN句複数指定
後輩君がハマってたので折角だから書いておこうかと。
SQL組んだんだけどデータが取れないらしく、どこがダメですかねとのお問合せ。
見ると画面で入力したチェックBOXのコード値をPL/SQLに渡して処理したいとのこと。
PLはこんな感じ。
select * from table where c1 in (p_type)
この「p_type」が複数だと効かないってとこまでは判明している模様。
そりゃ無理だ。
どうやらこの変数に「'AAA','BBB','CCC'」って文字列を渡してたっぽいんだけど、INは項目毎に変数作って値ぶちこんであげないとダメなんですねぇ。
なので、正解としては
where c1 in (p_type_a, p_type_b, p_type_c)
みたいなパラメータにするか、EXECUTE IMMEDIATE とかでSQL文字列作って上記のようなSQLをappendして実行する必要があると。
まぁ確認用に実行する時って''で連結して出すから気付きにくいわなぁっていうお話。
igGridにおける列の型変更によるレイアウト崩れ
igGridにおいて列の型をStringからNumberに変更したところ、Gridの下に変なスペースができてしまいました。
型変更だけでサイズが小さくなるもんかなと思ったら、どうやら非表示の列集計領域が生成されてしまった模様。
余計なことしやがって…!
なのでこれを無効化する手法をメモ。
name: "Summaries"のcolumnSettingsでcolumnKeyに対してallowSummariesをfalse指定するだけ。
$("#hoge").igGrid({ features: [ {name: "Summaries", columnSettings: [ { columnKey: "hogehoge", allowSummaries: false } ] } ] });
みたいな感じ。
iPhoneXの設定いろいろ
ついにiPhoneXを入手しましたが設定周りとか表示で「これどーすんの?」ってのがあったのでメモ。
Criteria APIによるフォームの入力値保持時の不具合
今の業務で画面のフォームに入力された値を元にバッチをキックするって機能があるんですが、ユーザからの問い合わせで「バッチがキックされない」「複数回キックされてるように見える」って問い合わせが来て原因を調査することに。
調べてみると実行ユーザ及びフォームに入力された内容を一旦mapに格納しそれをcriteriaで持ちまわっているようです。
で、複数人で同じ処理を実行するとこのcriteriaにセットした値が後から実行した人の情報で上書きされてしまうらしく、後勝ちの人は複数回実行されているように見え、先に実行した人は実行されていないように見える…というのが事象な模様。
そもそもcriteriaってクエリ発行するためのAPIで、こんな風にフォームの内容を保持して持ちまわるって使い方はあっているんだろうか・・・。
対応策としてcriteriaにはセットせずmapのまま持ちまわる事で解消できそうなんですが、なんだかなぁといった状況。
どっかにいいリファレンスとかあれば教えてください…。
===========================================================
2017/10/06追記
上書きされてしまうのはメソッド内でnew定義していなかった為らしい…。
グローバルで定義していたcriteriaを使いまわしているとNGと。
javaもっかい勉強しよ…。
phpで特定のサイトから文字列を引っこ抜きたい
ラズパイさんで毎朝7時に天気を読み上げ&ツイートする機能を実装したので、折角だから他に何かツイートさせたいなぁと思い、今日やってる東京のグルメイベントとかつぶやいたらいいんじゃねって思い立った。
ただhtmlのパースがめんどくさくてしゃあない…。