如何在SQL函数中将查询结果放入返回变量函数

问题描述:

如何在SQL函数中将查询结果放入返回变量中。我还包括一些错误消息,它显示了错误。我是SQL函数的新手,这将是很好,如果有人可以给出解释有关这如何在SQL函数中将查询结果放入返回变量函数

DELIMITER // 
CREATE FUNCTION fHW2_4_nuneedua(a varchar(50)) 
RETURNS varchar(50) 
BEGIN 
DECLARE result varchar(50) DEFAULT null; 
select if (a = NULL, 
      RAISERROR('please input a valid city name', 16, 1), 
      if((select * from dreamhome.guest where city = a) = 'NULL', 
        RAISERROR('Empty set', 16, 1), 
       (select GROUP_CONCAT(name) as output from dreamhome.guest where address like "% ' . $a . '%") 
      ) 
      ) INTO result 
RETURN result; 
END // 
DELIMITE 

我收到此函数的第12行上的错误。

+0

这个定义很难开始。为什么你在函数中使用'raiseerror',比如?也许你想要一个存储过程。 –

+0

先生,我是新的存储在SQL.I函数我想要在输出中显示错误。请你给我一些关于这个没有使用存储过程的参考? –

最简单的语法变化,我可以推荐,让你去(为一个函数)包括:

CREATE FUNCTION fHW2_4_nuneedua(@a Varchar(50)) 
RETURNS Varchar(50) 
AS 
BEGIN 
    IF @a IS NULL RETURN NULL 
    IF NOT EXISTS (SELECT * FROM dreamhome.guest WHERE city = @a) RETURN NULL 
    RETURN (SELECT GROUP_CONCAT(name) as output 
    FROM dreamhome.guest WHERE address LIKE "% ' . $" + @a + " . '%") 
END 

这是假定“dreamhome”是一个模式和“客人”是一个表...

+0

即使这是给错误。 它说在第1行的语法错误。 –

+0

@VarunGarg什么是错误说?如果它是“这个函数已经存在”错误,那么将“CREATE”一词改为“ALTER”。 – Sturgus