mysql - 我想将函数的 NOT NULL 字符串结果与表中可以为 NULL 的字段组合起来

标签 mysql sql parameters null stored-functions

好的,我有这个功能:

CREATE FUNCTION ReaderSearcher(id INT) RETURNS varchar(100) NOT DETERMINISTIC
BEGIN
    DECLARE resultList varchar(100);
    IF id > 0 THEN
        SET result = 'The search was a success! Readers:';
    ELSE
        SET result = 'The parameter has to be bigger than "0"!';
    END IF;
    RETURN result;
END $$

这个过程:

CREATE PROCEDURE searcher(id INT)
BEGIN
    SELECT ReaderSearcher(id) AS RESULT, readers.firstname AS NAME
    FROM readers WHERE READER_ID = id;
END $$

我希望我的结果是:

1) 一列不为空且至少包含消息“参数必须大于“0”!”

2)两列,第一列包含有关结果的消息,第二列包含读者姓名或某种占位符。

到目前为止,如果参数大于 0,它就可以工作,但任何低于 0 的值都不会给我带来任何结果,只会给我列的标签。我怎样才能让它发挥作用?我尝试了一些诸如 COALESCE 和 CONCAT 与 ISNULL 之类的东西,但它保持不变。

编辑:我正在使用 MySQL 和 MySQL Workbench。

最佳答案

我实际上得到了答案:

CREATE FUNCTION ReaderSearcher(id INT) RETURNS varchar(100) NOT DETERMINISTIC
BEGIN
    DECLARE result varchar(100);
    IF id > 0 THEN
        SELECT readers.FIRSTNAME INTO result from readers WHERE READER_ID = id;
    ELSE
        SET result = 'The parameter has to be bigger than "0"!';
    END IF;
    RETURN result;
END $$ 

这正是我想要的。

关于mysql - 我想将函数的 NOT NULL 字符串结果与表中可以为 NULL 的字段组合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342979/

相关文章:

MySQl如何在一列中使用多个运算符

php - 纯mysql而不是php中的批量更新?

mysqldump - 如果不存在则创建表

javascript - 事件处理程序中的参数 - Javascript

mysql 选择不同的逗号分隔值

mysql - 使用 SELECT INTO OUTFILE 时出现语法错误

python - PYMSSQL/SQL Server 2014 : is there a limit to the length of a list of PKs to use as a subquery?

java - jOOQ - 用于插入的多字段

c# - 从被调用线程获取信息返回主线程?

c# - 避免带参数的 SQL 注入(inject)?