mysql 存储过程参数问题
问题如下我想建立一个带2个参数的过程,第一个参数功能是数据库,第二个是表,实例如下createprocedurecx(dbchar(22),tblchar(44))beg...
问题如下 我想建立一个带2个参数的过程,第一个参数功能是数据库,第二个是表,实例如下
create procedure cx(db char(22),tbl char(44))
begin
select * from db.tbl;
end
call cx(dbname,tblname);
我要的功能是,第一个参数输入一个数据库,第二个参数是输入一个表名,就想函数一样,2个参数可以任意输入
怎么实现? 展开
create procedure cx(db char(22),tbl char(44))
begin
select * from db.tbl;
end
call cx(dbname,tblname);
我要的功能是,第一个参数输入一个数据库,第二个参数是输入一个表名,就想函数一样,2个参数可以任意输入
怎么实现? 展开
2个回答
展开全部
表名是不可以直接用变量,你可以多看看 PREPARE用法。
eg:
DROP PROCEDURE IF EXISTS `table`;
DELIMITER //
CREATE PROCEDURE `table`(IN tname varchar(64))
BEGIN
SET @sqlcmd = CONCAT('SELECT count(1) FROM ', tname);
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
call table('test');
eg:
DROP PROCEDURE IF EXISTS `table`;
DELIMITER //
CREATE PROCEDURE `table`(IN tname varchar(64))
BEGIN
SET @sqlcmd = CONCAT('SELECT count(1) FROM ', tname);
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
call table('test');
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询