Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
延々とメタデータについて書いていたのだが、さすがに長くなってきて、 こちらも飽きも出てきたので、気分転換ということもあり、 ファンクションについて書くことにする。 もちろん、メタデータについての話が全部済んだ訳ではないので、 またそのうちメタデータの残りの話に戻るかもしれないし、戻らないかもしれない。
CREATE FUNCTION
さて、ファンクション(関数)の作り方であるが、こういうときは オンラインマニュアルを見るに限る。
17.2.1. CREATE PROCEDURE and CREATE FUNCTION
このページの最初には、もちろん英語でごちゃごちゃと書かれているのだが、 面倒なので、取り敢えず無視して、ページの最後のほうにあるサンプルをいきなり 試してみることにしよう。
たぶん失敗するだろうから、その時に前に戻ったりしながら、問題解決に あたろうと思う。
以下が、ページの最後尾にあるファンクションのサンプルである。
mysql> delimiter //
mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
-> RETURN CONCAT('Hello, ',s,'!');
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> SELECT hello('world');
+----------------+
| hello('world') |
+----------------+
| Hello, world! |
+----------------+
1 row in set (0.00 sec)
これだけ読んで納得するのは良くない。 必ず、自分で実行してみて、本当に動作したときに初めて動いたと言える。
ということで、実際に試してみた。
mysql> use test;
Database changed
mysql> delimiter //
mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
-> RETURN CONCAT('Hello, ',s,'!');
-> //
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or
READS SQL DATA in its declaration and binary logging is enabled (you *might*
want to use the less safe log_bin_trust_function_creators variable)
mysql>
CREATE FUNCTION でエラーが出てしまった。 どうも、SQL文の構文エラーではなく、何かの制限で引っかかっているようだ。 うーん、どうすれば良いのだろうか。
たぶん、最初の方にあった、100行以上におよぶ英語を読めば原因が分かるのでは ないかと思う。ということで、今日はここで挫折し、次回までに調べることにしよう。
フィードバック:
There is no comment.