DROP PROCEDURE if EXISTS pro_up_game;
create  PROCEDURE  pro_up_game
      (id int,String_value VARCHAR(200),
       OUT Sok INT,out Error_descript varchar(100))
BEGIN
    DECLARE V_sql VARCHAR(200);
    DECLARE  _err int DEFAULT 1;
    DECLARE  Error varchar(200) DEFAULT 'Success';
    DECLARE CONTINUE HANDLER FOR  NOT FOUND, SQLEXCEPTION,SQLWARNING
      set _err= -1,Error  = 'SQLWaring or NOT FOUND or SQLException';  
    set V_sql = CONCAT('update game set ',String_value,' where gid =',id);
    SELECT V_sql;
    PREPARE stmt1 from  @V_sql;
    EXECUTE stmt1 ;
    set Sok = _err,Error_descript=Error;
    select Sok,Error;
END为什么执行会有错误 call  pro_up_game('4','gname =''国杀''',@Sok,@Error_descript);还有这个异常如何该 可以显示详细的异常信息;

解决方案 »

  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 'NULL' at line 1
      

  2.   

    前面那个存储过程 可以执行   call的时候报错
      

  3.   

    set Sok = _err,Error_descript=Error;   set Sok = _err;
       set Error_descript=Error;
      

  4.   


    你的程序中使用了不同的变量 !
    mysql> create  PROCEDURE  pro_up_game
        ->      (id int,String_value VARCHAR(200),
        ->       OUT Sok INT,out Error_descript varchar(100))
        -> BEGIN
        ->    DECLARE V_sql VARCHAR(200);
        ->    DECLARE  _err int DEFAULT 1;
        ->    DECLARE        Error varchar(200) DEFAULT 'Success';
        ->    DECLARE CONTINUE HANDLER FOR  NOT FOUND, SQLEXCEPTION,SQLWARNING
        ->      set _err= -1,Error  = 'SQLWaring or NOT FOUND or SQLException';
        ->    set @V_sql = CONCAT('update game set ',String_value,' where gid =',id);
        ->    SELECT @V_sql;
        ->    PREPARE stmt1 from  @V_sql;
        ->    EXECUTE stmt1 ;
        ->    set Sok = _err,Error_descript=Error;
        ->    select Sok,Error;
        -> END
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql> select * from game//
    +------+-------+
    | gid  | gname |
    +------+-------+
    |    4 | aaaaa |
    +------+-------+
    1 row in set (0.00 sec)mysql> call  pro_up_game('4','gname =''国杀''',@Sok,@Error_descript) //
    +--------------------------------------------+
    | @V_sql                                     |
    +--------------------------------------------+
    | update game set gname ='国杀' where gid =4 |
    +--------------------------------------------+
    1 row in set (0.00 sec)+------+---------+
    | Sok  | Error   |
    +------+---------+
    |    1 | Success |
    +------+---------+
    1 row in set (0.02 sec)Query OK, 0 rows affected (0.03 sec)mysql> select * from game//
    +------+-------+
    | gid  | gname |
    +------+-------+
    |    4 | 国杀  |
    +------+-------+
    1 row in set (0.00 sec)mysql>