0

抱歉,POST 很长:我是否可以从 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'不存在。它不是一个表,而是一个过程。

请指点。

问候,

——钟吉

4

1 回答 1

5

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

于 2010-11-05T09:18:21.600 回答