叶子

闲言碎语

吐血的mysql

上一次使用mysql,有2.3年了吧,还是4.X beta时候。之前就听说mysql支持存储过程和自定义函数啥的了,一直无缘得见。

最近ms的sql server2k用的烦了,想换换口味,就down了mysql 5.0.17正式版写个小procedure玩。没想到就此玩的差点吐血。事先翻了mysql 官方的文章,仔细看了看语法啥的,粗看和mssql差不多,就没多想,开写。

code 1.

create PROCEDURE sp_Account_select
(
)
BEGIN
  select * FROM tbAccount;
END

报错,不至于吧,觉得很标准的说。看了半天没看出什么意思,报错说select错,太莫名其妙了。把select这行单独执行,没错啊。难道存储过程的名称不支持下划线?ok,去掉!

code 2.

create PROCEDURE spAccountselect
(
)
BEGIN
  select * FROM tbAccount;
END

正确了。可是下划线也不是什么特殊玩意儿啊,怎么会都不支持?不信,继续test。

code 3.

create PROCEDURE sp_Accountselect
(
)
BEGIN
  select * FROM tbAccount;
END

这个这个。。正确的说。看来是支持下划线的,那哪里有了问题?仔细一比较,难道是select不能出现?把code3加上一个_,果然又报错了。不过这也多少可以理解,关键字不支持也说的过去。那么insert什么的呢?仍然test。

code 4.

create PROCEDURE sp_Account_insert
(
)
BEGIN
  select * FROM tbAccount;
END

这个正确。我汗了….把insert改成什么update,delete,都可以。就是select不可以,加减字母后发现,select不能单独出现,如果是_selectX,_Xselect,这样的都没问题,就是_select,_select_这样的就报错。

彻底无语了