Open Source WEB

とりあえず、ファンクションの作り方が分かった。 今度は、何等かの日本語文字列、漢字列を返す関数を作ってみよう。

作るファンクションは、'こんにちは' という文字列を返すだけの 超簡単なものにしよう。だから、引数もなくなった。

CREATE FUNCTION hello() RETURNS VARCHAR(50)
DETERMINISTIC RETURN 'こんにちは';

さて、これを、いままでの hello() と以下のようにして入れ替えた。

mysql> DROP FUNCTION hello;
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER //
mysql> CREATE FUNCTION hello() RETURNS VARCHAR(50)
    -> DETERMINISTIC RETURN 'こんにちは';
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;
mysql>

では、実際に動くかどうか試してみよう。

mysql> SELECT hello();
+------------+
| hello()    |
+------------+
| こんにちは |
+------------+
1 row in set (0.00 sec)
 
mysql>

ちゃんと動作しているようである。

では、念のために、現在のキャラクタセットがどうなっているか確認しておこう。

mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | latin1 |
| character_set_connection | latin1 |
| character_set_database   | latin1 |
| character_set_results    | latin1 |
| character_set_server     | latin1 |
| character_set_system     | utf8   |
+--------------------------+--------+
6 rows in set (0.00 sec)
 
mysql>

いけない、latin1のままになっている。 漢字が使えるように、ここでは、eucjpms に設定して、 再度実行してみよう。

mysql> SET NAMES eucjpms;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT hello();
+------------------------------+
| hello()                      |
+------------------------------+
| ・?・・・・・・・・ |
+------------------------------+
1 row in set (0.02 sec)
 
mysql>

となってしまった。

日本語が表示できない状態になっているのだろうか、確認もしておこう。

mysql> SELECT 'こんにちは';
+------------+
| こんにちは |
+------------+
| こんにちは |
+------------+
1 row in set (0.00 sec)
 
mysql>

そんなことはないようだ。 日本語文字列を返す関数のときに注意すべきことを何か忘れたようだ。 次回までに、しっかり考えてみることにしよう。


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

次へ:日本語文字列を返すにはどうすれば良いのか


フィードバック:

Name:
Comment:

There is no comment.

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

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