从视图中调用存储过程

use*_*257 3 mysql stored-procedures view

我有一个创建表的过程,是否有可能有一个视图(或类似的)可以调用该过程然后从表中选择?

我试过这个:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` FUNCTION `new_routine`(p1 INT) RETURNS int(1)
BEGIN
    CALL rMergeDateFields();
    RETURN 1;
END


CREATE VIEW `db`.`vIntervals` AS
  SELECT new_routine(0) AS col1;
  SELECT * FROM MergedData;
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误

错误 1422:存储的函数或触发器中不允许显式或隐式提交。

有任何想法吗?

Mat*_*hew 5

你不能。视图通常是只读操作;如果调用存储过程,则无法保证该行为。

相关问题:

如何在视图中调用存储过程?

是否可以在视图中调用存储过程?

这是一个规范资源:

http://dev.mysql.com/doc/refman/5.1/en/view-updatability.html

一些视图是可更新的。也就是说,您可以在 UPDATE、DELETE 或 INSERT 等语句中使用它们来更新基础表的内容。要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。还有某些其他构造使视图不可更新。

由于调用存储过程不能保证与视图行的 1:1 关系,因此不允许更新。