日期:2014-05-16  浏览次数:20843 次

这段到底什么错呢?
SQL code
create procedure sp_cube_inverter_d (in p_nowdate datetime)
begin
  declare v_nowdate    char(8);
  declare v_curdate    datetime;

  set v_curdate = left(p_nowdate,10);
  set v_nowdate = replace(cast(v_curdate as char(10)),'-','');



>[错误] 脚本行:1-90 --------------------------------------
 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'procedure sp_cube_inverter_d ( in p_nowdate datetime)
begin
  declare v_nowdate ' at line 45 

 警告:---> 
  W (1): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'procedure sp_cube_inverter_d ( in p_nowdate datetime)
begin
  declare v_nowdate ' at line 45

------解决方案--------------------
应该不是空格的原因吧,下面测试没有任何问题啊。

SQL code
mysql> delimiter //
mysql> create procedure sp_cube_inverter_d (in p_nowdate datetime)
    -> begin
    ->   declare v_nowdate    char(8);
    ->   declare v_curdate    datetime;
    ->
    ->   set v_curdate = left(p_nowdate,10);
    ->   set v_nowdate = replace(cast(v_curdate as char(10)),'-','');
    -> end //
Query OK, 0 rows affected (0.26 sec)

mysql> delimiter ;
mysql>

------解决方案--------------------
探讨

( in p_nowdate datetime )
加个空格就好了,晕。

mysql语法太敏感了