1:我的存储过程需要一个输入,就是表名,然后根据输入参数查询这个表,但是报错!CREATE PROCEDURE `lyotestpro`(param1 VARCHAR(12))
BEGIN
 SELECT * from  param1;
END;报错说表 mysql.param1 不存在!? 2: 我想写一个限制查询出来数据条数的存储过程,还是报错!
CREATE PROCEDURE `lyotestpro`(param1 INTEGER(12),param2 INTEGER(12))
BEGIN
 SELECT * from  user limit param1,param2;
END;还是报错!? 说 param1附近有语法错误?!
为什么 MySQL中这麽简单的存储过程都编译同不过?! 请帮忙!

解决方案 »

  1.   

    对了,上面是
    CREATE PROCEDURE `lyotestpro`(IN param1 VARCHAR(12))
    BEGIN
     SELECT * from  param1;
    END;
    CREATE PROCEDURE `lyotestpro`(IN param1 INTEGER(12),IN param2 INTEGER(12))
    BEGIN
     SELECT * from  user limit param1,param2;
    END
    仍然报错◎!
      

  2.   

    mysql 存储过程 不返回result
      

  3.   

    要创建存储过程1. 首先要 改变分隔符, 因为 ';' 默认是sql client 中的提交命令符号.
       这会和存储过程中的sql语句末尾的';' 冲突.2. 动态的 sql 需要特殊的步骤下面给个例子:
    ------------------------------------------------delimiter //;drop procedure if exists mytest //create procedure mytest
    (
       tblname varchar(50)
    )
    begin
       set @sqltxt = concat('select * from ', tblname);   prepare sqlstmt from @sqltxt;   execute sqlstmt;   deallocate prepare sqlstmt;
    end//delimiter ;//
      

  4.   

    执行:  call mytest('test.account');
      

  5.   

    delimiter $$;
    CREATE PROCEDURE `lyotestpro`(param1 VARCHAR(12))
    BEGIN
     SELECT * from  param1;
    END$$
    delimiter ;$$
    delimiter $$;
    CREATE PROCEDURE `lyotestpro`(IN param1 INTEGER(12),IN param2 INTEGER(12))
    BEGIN
     SELECT * from  user limit param1,param2;
    END$$
    delimiter ;$$
    call lyotestpro('你的数据库.你的表');
    call lyotestpro('你的数据库.你的表1','你的数据库.你的表2')