mysql存儲過程實例詳解 mysql為什么沒有存儲過程?
mysql為什么沒有存儲過程?創(chuàng)建存儲過程mysql> delimiter $ -- delimiter $是設(shè)置 $為命令終止符號,代替默認的分號,因為分號有其他用處.mysql> crea
mysql為什么沒有存儲過程?
創(chuàng)建存儲過程mysql> delimiter $ -- delimiter $是設(shè)置 $為命令終止符號,代替默認的分號,因為分號有其他用處.mysql> create procedure sp_test(IN pi_id int, OUT po_name varchar(10))-> begin-> select * from test.tb_test-> select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id-> end-> $Query OK, 0 rows affected (0.00 sec)mysql> delimiter -- 恢復(fù)分號作為分隔終止符號5.調(diào)用存儲過程mysql> set @po_name=""Query OK, 0 rows affected (0.00 sec)mysql> call sp_test(1,@po_name)
為什么mysql的存儲過程調(diào)用一次會運行多次?
在sqlyog中,調(diào)用了一次call我的存儲過程(入?yún)?然后,在mysql中執(zhí)行showfullprocesslist進行查看發(fā)現(xiàn)有兩個連接在同時執(zhí)行我的存儲過程中的語句(別的是不可能出現(xiàn)那些sql語句的)而且經(jīng)過執(zhí)行后的結(jié)果來看,執(zhí)行后的數(shù)據(jù)為正常數(shù)據(jù)的兩倍。然后將存儲過程中的sql語句進行逆運算(比如,加變成減),然后再執(zhí)行,發(fā)現(xiàn)數(shù)據(jù)恢復(fù)為正常數(shù)據(jù)了。