0

我有一个带有以下选择语句的程序:

SELECT TYPE 
INTO v_type
FROM timeperiodtype
WHERE projectid = 15;

我没有 projectid = 15 的记录。所以没有记录将被检索。如果我没有 15 的记录,有什么办法可以从这个查询中得到 null 而不是什么都没有。

我已经尝试过 ifnull、nullif 并且我可以使用声明处理程序,但我将它与游标一起使用。如果是的话,是否可以对这个查询使用相同的声明处理程序,然后请用一些例子来解释。

4

2 回答 2

2

v_type在执行NULL之前显式初始化SELECT INTO

SET v_type = NULL;
SELECT TYPE 
  INTO v_type
  FROM timeperiodtype
 WHERE projectid = 15;

或者只是使用SET声明

SET v_type = 
(
  SELECT TYPE 
    FROM timeperiodtype
   WHERE projectid = 15;
);

这是SQLFiddle演示

于 2014-01-03T10:49:17.483 回答
0

首先使用任何初始值初始化 v_type 或在下面的查询中使用 'AS' 而不是 'INTO'

SELECT IF(COUNT(TYPE) > 0, TYPE, NULL) 
INTO v_type
FROM timeperiodtype
WHERE projectid = 15;
于 2014-01-03T11:58:59.940 回答