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个参数可以任意输入
怎么实现?
展开
 我来答
愤怒村长
2010-10-28 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:131
采纳率:100%
帮助的人:65.7万
展开全部
表名是不可以直接用变量,你可以多看看 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');
wangzhiqing999
2010-10-15 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3336万
展开全部
mysql 不熟悉
假如是 SQL Server 或者 Oracle 的话
这种情况,需要动态 SQL 来处理

尝试

定义一个变量叫 sql
sql = 'select * from ' + db + '.' + tbl
EXEC(sql);
看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式