Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 临时程序定义变量问题_Mysql - Fatal编程技术网

Mysql 临时程序定义变量问题

Mysql 临时程序定义变量问题,mysql,Mysql,我第一次尝试MySQL过程,但是我不知道如何为我的一生定义变量@index_id。它真的不喜欢这个场景 CREATE PROCEDURE #indextemp BEGIN SET @index_ids = (SELECT DISTINCT index_id FROM visibility_index_processing_queue WHERE process_id IS NOT NULL); SELECT @index_ids; END 问题出在CREATE PROCEDURE语法中

我第一次尝试MySQL过程,但是我不知道如何为我的一生定义变量@index_id。它真的不喜欢这个场景

CREATE PROCEDURE #indextemp
BEGIN
  SET @index_ids = (SELECT DISTINCT index_id FROM visibility_index_processing_queue WHERE process_id IS NOT NULL);
  SELECT @index_ids;
END

问题出在
CREATE PROCEDURE
语法中,而不是设置变量中。只需在过程名称后添加括号即可。这是工作样品

delimiter $
CREATE PROCEDURE indextemp()
BEGIN
  SET @index_ids = (SELECT DISTINCT index_id FROM visibility_index_processing_queue WHERE process_id IS NOT NULL);
  SELECT @index_ids;
END$
delimiter ;
有时,在过程体中使用分隔符也会导致问题。这就是为什么我在创建过程之前将分隔符设置为
$
,并将其恢复为默认值
完成后

还请注意,我已从您的过程名称中删除了
#
。在sql中,
用于插入注释。如果出于某种原因,你真的想以你的名义使用它,你必须这样做

CREATE PROCEDURE `#indextemp`()

“它真的不喜欢这个场景”-你应该详细说明一下。你得到了什么错误消息,或者你看到了什么行为与你期望的相比?谢谢,这是一个进步,但如果我尝试在过程名称中使用#将其设置为本地临时过程,它仍然会出错。我想我正在尝试在mysql中做一些不可能的事情