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中这麽简单的存储过程都编译同不过?! 请帮忙!
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中这麽简单的存储过程都编译同不过?! 请帮忙!
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
仍然报错◎!
这会和存储过程中的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 ;//
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')