【问题标题】:MySQL Call Stored procedure from another stored procedureMySQL 从另一个存储过程调用存储过程
【发布时间】:2011-05-05 12:12:11
【问题描述】:

抱歉,帖子太长了: 是否有可能我可以从另一个调用存储过程 MySQL 中的存储过程。 例如: 我有两个表(test 和 testcomp): 结构如下:

-- 表test的表结构

CREATE TABLE IF NOT EXISTS `test` (
    `t_id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    PRIMARY KEY (`t_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

-- 表testcomp的表结构

CREATE TABLE IF NOT EXISTS `testcomp` (
    `c_id` int(11) NOT NULL AUTO_INCREMENT,
    `t_id` int(4) NOT NULL,
    `place` varchar(255) NOT NULL,
    PRIMARY KEY (`c_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

现在我填充了测试表:

INSERT INTO `test` (`t_id`, `name`) VALUES
    (1, 'foo'),
    (2, 'bar'),
    (3, 'ma');

和表testcomp:

INSERT INTO `testcomp` (`c_id`, `t_id`, `place`) VALUES
    (1, 1, 'gugs'),
    (2, 2, 'nyanga'),
    (3, 1, 'gugs'),
    (4, 3, 'skom');

现在如果我有 2 个程序:

第一个 QryTestComp:

SELECT t_id, place FROM TestComp

上面的一个作为刚刚查询的普通表: 但是第二个QryTestPlac,它调用了上面的过程:

SELECT * FROM Test INNER JOIN QryTestComp ON Test.t_id = QryTestComp.t_id

出现错误:

它显示错误:1146 (42S01):表“mydb.qrytestcomp”不存在。 它不是一个表,而是一个过程。

请指点一下。

问候,

--钟吉

【问题讨论】:

    标签: mysql sql procedures mysql-error-1146


    【解决方案1】:

    您不能加入存储过程,也许使用视图可能更合适?

    【讨论】:

    • 或者,考虑从存储过程中选择一个临时表,然后加入该表。不过,视图更有意义。
    • 谢谢,观点就像魅力一样,这就是我想要的!祝你有美好的一天
    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多