コピー2018.09.06先日少しはまった話。構文というものがあります。これを利用すると簡単にクエリー結果を変数に格納することができます。仕事で、MySQLのストアドを利用して、指定のIDとOUTパラメータを引数にセットし、OUTパラメータに引数に対応する値を返すというストアドを同僚が作っていました。構文を使って下記のようになっていました。@name;END実際のテーブルは下記のようになっているとします。この時、p_idに1を指定すると、p_nameには「りんご」という値が入ります。p_idに2を指定すると、p_nameには「みかん」という値が入ります。ここでp_idに10を指定するとどうなるでしょう。fruid_idが10のfruit_nameはないから、結果はnullになる。同僚もそうなると思ったようですが、違いました。結果は一つ前に実行したときに取得した「みかん」を取得。プログラム作って動かしていた自分は、最初、「やけに同じ結果が返ってくるなぁ。nullが返ってくると思ったのだけど」なんて呑気に思い、しばらくバグに気づきませんでした。これはなぜかというと、MySQLの変数はセッション変数で、つなげている間は結果が保持されるためだそうです。眠すぎて明日が見えないなので、上記のように変数に格納したい場合は、いったんnullで初期化する記述を追加したほうがいいです。@name;ENDただ、この程度だったら直接outパラメータを指定したほうがシンプルかもしれないですけどね。1;ENDそれより、WorkBenchがちょくちょく結果を表示してくれないことがあった困る。returned」って書いてあるのに、表示してくれないことがあるんだ......。コピーamyuをフォローするamyuwhile(isプログラマ)関連記事SQLSQLの結果のフィールド名が空白になってしまう現象に遭遇した先日、会社の後輩に作ってもらったストアドで、なぜか一部、ストアドで返ってくる結果のフィールド名が空白になってしまうという現象が発生しました()。具体的には下記のようなSQLとなっていた。最近、仕事では複雑なSQLばっかり書いています。これできないの?」と思ったことがるので書きます。試した環境はMySQL8(他のDBMSでは動作が異なるかもしれない)。うまく動かなかったのは、サブクエリのサブクエリにメインクエリの値を使お...SQLMySQL8のデフォルト照合規則「utf8mb4_0900_ai_ci」について調べてみた前からたまに、MySQLを仕事で使ってきたのですが、照合規則については詳しくなかった自分。現在の仕事で、ひらがなでもカタカナ、小文字でも大文字、全角でも半角が検索でヒットするシステムを作ってほしいとのことで少ししらべてみました。...SQL[SQL]再帰クエリを使い、兄弟要素の並びが指定されているテーブルのデータを正しい並び順で取得する先日、仕事で、親のIDという項目があるテーブルを使う要件があったので、その時の知見をメモ。用は下記のような木構造データが、RDBのテーブル内に含まれていたわけです。∟∟孫3...SQL【MySQL】DECIMAL型の小数点以下の末尾の0を取り除く方法データベースにMySQLを使っているシステムにおいて、MySQLから数値を文字列として取得してそのまま表示したいということがあったのだけれども、DECIMAL型だとなんと小数点以下の末尾の0がそのまま表示されてしまうことが発覚。コメントをキャンセルメールアドレスが公開されることはありません。(幻冬舎文庫)(ブクログレビュー)カテゴリーPR2Web制作76CSS16HTML8HTML512jQuery17Vue.js14WebAPI2WordPress6まとめ13フリーソフト7プログラミング101JavaScript61PHP5R10SQL10UiPath7VBA3クラシックASP1日記11イベント5書評1未分類2豆知識19雑記25アーカイブ2023年4月12023年3月12023年1月12022年12月12022年11月32022年10月22022年9月12022年8月12022年6月22022年5月12022年4月32022年3月22022年2月52022年1月82019年9月22019年6月32019年5月12019年2月32019年1月32018年12月42018年11月12018年10月22018年9月22018年8月22018年7月32018年6月12018年5月22018年4月22018年3月52018年2月12016年11月32016年10月62016年2月12016年1月32015年12月22015年11月32015年10月12015年9月12015年7月12015年5月22015年4月22015年3月22015年2月22015年1月22014年12月42014年11月92014年10月62014年9月52014年8月72014年7月62014年6月52014年5月52014年4月62014年3月62014年2月92014年1月132013年12月82013年11月92013年10月82012年8月12012年6月32012年5月42012年4月42012年3月62012年2月82012年1月17タイトルとURLをコピーしました。