Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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,我有以下数据库表:表名-dim_模块 id Creation_Date Goals Alternative Value ----------------------------------------------------------- 1 2014-04-17 10:09:30 G1 A 0.86 2 2014-04-17 10:09:30 G1 B 0

我有以下数据库表:表名-dim_模块

id       Creation_Date         Goals  Alternative    Value
-----------------------------------------------------------
1   2014-04-17 10:09:30         G1         A         0.86
2   2014-04-17 10:09:30         G1         B         0.87
3   2014-04-17 10:09:30         G2         A         0.5
4   2014-04-17 10:09:30         G2         B         0
我使用以下程序来获得所需的输出

CREATE DEFINER=`root`@`localhost` PROCEDURE `stmt`()
BEGIN
SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(goals = ''',
      goals,
      ''', round(value, 2), NULL)) AS ',
      goals
    )
  ) INTO @sql
FROM sgwebdb.dim_module;
SET @sql = CONCAT('SELECT alternative, ', @sql, ' FROM sgwebdb.dim_module GROUP BY alternative');

prepare stmt from @sql;
但若Dim_模块并没有任何行,那个么程序就不小心了,我得到了错误

错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以获取第1行中接近“NULL”的正确语法


请帮助处理空表。

可能是因为
@sql
为空

尝试使用IFNULL将其设置为某个值

SET @sql = CONCAT('SELECT alternative, ', IFNULL(@sql,'somecolumnor*here'), ' FROM sgwebdb.dim_module GROUP BY alternative');

或者检测到
@sql
为空并执行其他操作。

在第二次
中使用@sql之前,您可以先检查它,然后选择它:

IF @sql
THEN
    SET @sql = CONCAT('SELECT alternative, ', @sql, ' FROM sgwebdb.dim_module GROUP BY alternative');
    prepare stmt from @sql;
END IF;

如果Dim_模块没有任何行,您希望得到任何有意义的结果吗?