当前位置: 首页 > 面试题库 >

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

邬安邦
2023-03-14
问题内容

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();


 类似资料:
  • 问题内容: 我正在尝试创建一个存储过程。这是我到目前为止(不起作用)的内容: HAVERSINE是我创建的可以正常工作的函数。如您所见,我正在尝试从“城市”表中获取城市的ID,然后将cityLat和cityLng设置为该记录的其他值。我显然在这里通过使用SELECTs做错了。 这有可能吗?看来应该如此。任何帮助将不胜感激。 问题答案: 更正了一些问题,并添加了一个替代选择-适当删除。

  • 问题内容: 我想选择一个值到一个变量中。我试图遵循: -立即返回一些语法错误。 -返回一个整数 -不起作用,也尝试了@myvar 是否可以在存储过程或函数之外使用DECLARE? 也许我只是不了解用户变量的概念……我只是尝试过: …工作原理与预期的一样。但是,如果我一次运行每个查询,我只会得到@var NULL。 问题答案: 最后,存储过程是解决我的问题的方法。这是有帮助的:

  • 我想使用以下类型的python脚本中的SELECT,包含2个变量: 带有ID的列表 计数 类似这样的事情: “in”中的ID的数量将会改变,“limit”也会根据服务的数量改变。(在本例中,我有4个服务器id,因此限制也是4个) 我尝试了以下(这是一种场景): 不幸的是,它仅使用第一个ID的行(本例中为24),并且忽略了限制 打印(元组)的输出如下: 我想在in()部分中有“24,347,359,

  • 问题内容: 当我尝试执行以下查询时: 我收到一个错误: #1327-未声明的变量:newsletter_to_send 该查询有什么问题? 问题答案: http://dev.mysql.com/doc/refman/5.1/zh-CN/insert- select.html PS:您确定不需要in 子句吗?

  • 问题内容: 我正在开始一个大型的Codeigniter项目,并想尝试为内容片段(如可能在不同页面/控制器上显示的数据循环)创建一些可重用的“迷你”视图。 从主控制器的视图中调用视图更好吗?如果是这样,怎么办?还是应该从控制器调用“迷你视图”,然后将视图的代码传递给主视图? 问题答案: 其他视图中的视图称为 嵌套视图 。在CodeIgniter中包括嵌套视图的方法有两种: 1.将嵌套视图加载到控制器

  • 如果不能理解我的英语是因为我的英语不好。。。。我会尽力解释我的问题。 我试图在mysql(phpmyadmin)中创建一个存储过程,但出现了以下错误: #1064年的今天,您的SQL语法出现错误;请查看与MySQL服务器版本对应的手册,以获取第3行“”附近使用的正确语法 这是存储过程的代码: 这是表格用户的代码: 对不起,我的英语不好