Покрай на OLD FIEND, ми хрумна да си поиграя малко със съхранените функции в MySQL, но се натъкнах на нещо малко неочаквано. Не съм сигурен дали грешката е в мен или в MySQL, защото съм писал съхранени функции само на PostgreSQL досега, но ето какво става:
mysql> create table test (id int unsigned auto_increment primary key, name varchar(10));
Query OK, 0 rows affected (0.10 sec)
mysql> insert into test (name) values ('A'), ('B'), ('C');
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from test;
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | B |
| 3 | C |
+----+------+
3 rows in set (0.00 sec)
mysql> set @x := 1;
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter //
mysql> create function inc () returns int
-> begin
-> set @x := @x + 1;
-> return @x;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> select inc();
+-------+
| inc() |
+-------+
| 2 |
+-------+
1 row in set (0.01 sec)
mysql> select inc();
+-------+
| inc() |
+-------+
| 3 |
+-------+
1 row in set (0.01 sec)
mysql> select inc();
+-------+
| inc() |
+-------+
| 4 |
+-------+
1 row in set (0.00 sec)
mysql> select inc();
+-------+
| inc() |
+-------+
| 5 |
+-------+
1 row in set (0.00 sec)
mysql> select inc();
+-------+
| inc() |
+-------+
| 6 |
+-------+
1 row in set (0.00 sec)
mysql> select id, name, inc() from test;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> select id, name, inc() from test;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
ERROR:
Can't connect to the server
Everything louder than everything else...Редактирано от Dakota на 14.04.05 12:38.