ERR:Explicit or implicit commit is not allowed in stored function or trigger.
想請問大大們,小弟有地方寫錯就是找不出來-_-!!!
而且連單純SELECT也無法創建FUNCTION,網路上我查到的範例也很一直翻不到好的範例~!
不知道可指導小弟一下~謝謝!
delimiter $$
CREATE FUNCTION test (size INT) RETURNS INT
BEGIN
CREATE TABLE tmp (SELECT * FROM books WHERE type=size);
RETURN size;
END$$
delimiter;
<pre class="c" name="code">
CREATE PROCEDURE `sp_ithelp0827`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
CREATE TABLE ithelp0827(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(16) NOT NULL
);
SELECT "老大! Table: ithelp0827 我已經建立好了!!" AS '回報';
INSERT INTO ithelp0827(name) VALUES
("小島みなみ"),("桜木凛"),("川上奈々美");
SELECT "老大! Table: ithelp0827 我已經輸入三筆資料!!" AS '回報';
END
執行結果:
樓主最近問了好幾個問題,感覺好像遇到困難.
把問題Post上來吧.
其實就是上次那個 班上各科成績表TABLE
然後把每一科排名查出來並join學號 整理出一份班上各科排名TABLE
但後來知道join太多 會讓執行續卡住。
就改為一科整理出一個TABLE,
後來又想說寫看看mysql function傳入要查科目為參數,就卡關了
CREATE TABLE tmp_math (SELECT @rownum:=@rownum+1 AS 'rank', id, math FROM class_a, (SELECT @rownum:=0) AS b ORDER BY math desc)
上次那個啊,你把你的測試資料,還有想要達到的整理一下.
不然擠成一大坨,我年紀大了,老花眼看不清楚.
原本的TABLE:全校各科成績
+------------+------+-----+------+
| 學號| 國語| 英語| 數學|
+------------+------+-----+------+
| 49421101 | 30 | 90 | 100 |
| 49421102 | 50 | 60 | 50 |
| 49421103 | 70 | 80 | 0 |
+------------+- ----+-----+------+
想讓查詢結果變成全校各科排名
因為原本我異想天開的讓他每個結果JOIN 學號 成一張TABLE 如下面
<pre class="c" name="code">
codegeass 說:
NEW TABLE:全校各科RANK
+-----+--------+---------+---------+
| 學號| 國語RANK| 英語RANK| 數學RANK|
+----------+------+-----+------+
| 49421101 | 1 | 1 | 1 |
| 49421102 | 2 | 2 | 2 |
| 49421103 | 3 | 3 | 3 |
+----------+- ----+-----+------+
因為科目也不止3科,學號也會很多
導致我當時JOIN結果超過4科以上,執行就卡在那邊了。
所以我後來就用一個科目查一個新表出來。
才衍生出後面最近問的事情~!
該JOIN就JOIN啊.....
剛剛打錯順序 (這是修改版)
NEW TABLE:全校各科RANK
+-----+--------+---------+---------+
| 學號| 國語RANK| 英語RANK| 數學RANK|
+----------+------+-----+------+
| 49421101 | 3 | 1 | 1 |
| 49421102 | 2 | 3 | 2 |
| 49421103 | 1 | 2 | 3 |
+----------+- ----+-----+------+
不懂?大大您說的?
該JOIN就JOIN啊.....
我原本是用JOIN可是會卡住。
我好糟糕....一直打好亂的回應....~!!
你的MySQL在哪種OS上跑?
版本是多少? 設定檔是怎樣?
目前是在PC用usbwebserver 在phpmyadmin 上測試
5.6.13 - MySQL Community Server (GPL)
之後是放到LINUX
是不是要調整可用快取記憶體嗎?來解決JOIN的卡住?
我建立1000筆,10科目,排名後JOIN,再依學號排序,
只要 31.68 sec.
哪尼~~我才14筆16科....就看到phpmyadmin 沒反應了...!!!
那是PHPMyAdmin的問題,不是MySQL的問題.
我等等搬到linux內 測看看~!
謝謝hitomitanaka 大大!
但我剛看到需要花31秒,我覺得我還是乖乖的把他拆開好了~!
因為這動作執行31秒,其他要執行的指令就必須等此指令完成,方可動作T-T