过程#1351中的MySQL错误-视图的SELECT包含变量或参数

PhpMyAdmin不接受该过程内的参数“ id_jugador_IN”。

这是我们正在执行的过程:

SET GLOBAL event_scheduler = 1;

use traviandatabase;

DELIMITER $$

DROP PROCEDURE IF EXISTS sp_monitoritzacio_jugador $$

CREATE PROCEDURE sp_monitoritzacio_jugador(IN id_jugador_IN INT(10))

BEGIN

CREATE OR REPLACE

VIEW dades_ususari AS

SELECT j.nom AS jugador, j.sexe AS sexe, j.edat AS edat, j.correu AS correu, a.nom AS alianca, p.nom AS pais, c.nom_ciutat AS ciutat

FROM jugador AS j

JOIN alianca AS a

JOIN pais AS p

JOIN ciutat AS c

ON j.id_jugador = id_jugador_IN

GROUP BY id_jugador_IN;

END $$

DELIMITER ;

CALL sp_monitoritzacio_jugador(1);

这是表“ jugador”:

DROP TABLE IF EXISTS `jugador`;

CREATE TABLE `jugador` (

`id_jugador` int(10) NOT NULL AUTO_INCREMENT,

`id_raca` int(10) NOT NULL,

`id_pais` int(10) NOT NULL,

`id_alianca` int(10) DEFAULT '0',

`nom` varchar(20) NOT NULL,

`sexe` enum('Home','Dona') NOT NULL,

`edat` int(10) NOT NULL,

`correu` varchar(20) NOT NULL,

PRIMARY KEY (`id_jugador`),

KEY `jugador-alianca` (`id_alianca`),

KEY `id_pais` (`id_pais`),

KEY `id_raca` (`id_raca`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

因此,它不会停止显示相同的错误:

MySQL说:1351-视图的SELECT包含一个变量或参数

回答:

如您所见-视图不能使用变量,这是一个限制。您正在尝试创建一个具有确切WHERE条件的视图;首先构造CREATE

VIEW语句文本,然后使用准备好的语句执行该语句,它将为您提供帮助。但是,您真的需要它来创建,创建和创建新视图吗?

编辑:这是注释中参考的内容。

奥列克山大·梅尔尼克对MySQL的意见中对局部变量使用限制一个简单的解决方法是使用一个函数,返回变量的值:

create function book_subject

returns varchar(64) as

return @book_subject;

create view thematical_books as

select title

, author

from books

where subject = book_subject();

以上是 过程#1351中的MySQL错误-视图的SELECT包含变量或参数 的全部内容, 来源链接: utcz.com/qa/403581.html

回到顶部