Mysql动态sql出错
CREATE PROCEDURE usp_get_game_by_id(
  v_startRow int,  
  v_rowCount int,
  inout v_gameid int,   
  out v_name varchar(20),
  out v_url varchar(500),
  out v_imagePath varchar(100),
  out v_viewCount int,
  out v_count int,
  out v_categoryId int,
  out v_categoryName varchar(20)
)
begin
  declare v_sql_slc_comment varchar(400);  
  declare v_sql_slc_game_category varchar(400);  
  declare v_sql_slc_count varchar(400);
   set v_sql_slc_comment = 'select Id,Commenter,Content,CommentTime from t_comment where gameid=? order by CommentTime desc limit ?,?';   
   set v_sql_slc_game_category = 'select g.Id,g.Name,g.CategoryId,g.ViewCount,g.Url,g.ImagePath,c.CategoryName CategoryName  
                                  into ?,?,?,?,?,?,? from t_game g  
                                  join t_category c on g.CategoryId=c.Id where g.Id = ?';                                  
   set v_sql_slc_count = 'select count(1) into ? from t_comment where gameid=?';
   set @v_sql_slc_comment = v_sql_slc_comment;     
   set @v_sql_slc_game_category = v_sql_slc_game_category;   
   set @v_sql_slc_count = v_sql_slc_count;
   set @gameid = v_gameid;   
   set @name = v_name;   
   set @categoryId = v_categoryId;   
   set @viewCount = v_viewCount;   
   set @url = v_url;   
   set @imagePath = v_imagePath;   
   set @categoryName = v_categoryName;
   set @startRow = v_startRow-1;   
   set @rowCount = v_rowCount;
   prepare stmt_slc_comment from @v_sql_slc_comment;   
   prepare stmt_slc_game_category from @v_sql_slc_game_category;   
   prepare stmr_slc_count from @v_sql_slc_count;
   EXECUTE stmt_slc_comment using @gameid,@startRow,@rowCount;     
   EXECUTE stmt_slc_game_category using @gameid,@name,@categoryId,@viewCount,@url,@imagePath,@categoryName,@gameid;   
   EXECUTE stmr_slc_count using @viewCount,@gameid;
end;
出错信息:
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 '?,?,?,?,?,?,? from t_game g  
                                  join t_category c' at line 2
------解决方案--------------------
你的代码执行并无错误!
mysql> delimiter //
mysql> CREATE PROCEDURE usp_get_game_by_id(
   ->  v_startRow int,
   ->  v_rowCount int,
   ->  inout v_gameid int,
   ->  out v_name varchar(20),
   ->  out v_url varchar(500),
   ->  out v_imagePath varchar(100),
   ->  out v_viewCount int,
   ->  out v_count int,
   ->  out v_categoryId int,
   ->  out v_categoryName varchar(20)
   -> )
   -> begin
   ->  declare v_sql_slc_comment varchar(400);
   ->  declare v_sql_slc_game_category varchar(400);
   ->  declare v_sql_slc_count varchar(400);
   ->   set v_sql_slc_comment = 'select Id,Commenter,Content,CommentTime from t
_comment where gameid=? order by CommentTime desc limit ?,?';
   ->   set v_sql_slc_game_category = 'select g.Id,g.Name,g.CategoryId,g.ViewCo
unt,g.Url,g.ImagePath,c.CategoryName CategoryName
   '>   into ?,?,?,?,?,?,? from t_game g
   '>   join t_category c on g.CategoryId=c.Id where g.Id = ?';
   ->   set v_sql_slc_count = 'select count(1) into ? from t_comment where game
id=?';
   ->   set @v_sql_slc_comment = v_sql_slc_comment;
   ->   set @v_sql_slc_game_category = v_sql_slc_game_category