Open Source WEB

延々とメタデータについて書いていたのだが、さすがに長くなってきて、 こちらも飽きも出てきたので、気分転換ということもあり、 ファンクションについて書くことにする。 もちろん、メタデータについての話が全部済んだ訳ではないので、 またそのうちメタデータの残りの話に戻るかもしれないし、戻らないかもしれない。


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行以上におよぶ英語を読めば原因が分かるのでは ないかと思う。ということで、今日はここで挫折し、次回までに調べることにしよう。


戻る:式中の要素に漢字エイリアスを使うとどうなるか(続編)

次へ:ファンクションを作ることができた


フィードバック:

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us