MariaDB 10.3.22用户自定义变量定义报错及查询结果赋值咨询
问题根源
你混淆了MariaDB的两种变量规则,同时混用了SQL Server的T-SQL语法,另外自定义函数的基础语法缺失:
- 带
@前缀的是会话级用户自定义变量,不需要提前用DECLARE声明,赋值即可直接使用,作用域为当前数据库连接。 - 不带
@前缀的是局部变量,仅能在存储过程、自定义函数、触发器的BEGIN...END块开头用DECLARE声明,仅在块内部生效。 - MariaDB没有
PRINT语句,输出变量值用SELECT语句即可。 - 自定义函数必须声明空参数列表(无参数也要写
())、返回值类型,且必须包含RETURN语句返回对应类型的结果。
你的错误示例修正
1. 直接测试变量的正确写法
不需要DECLARE,直接执行:
SET @EmpName1 = 'Ali'; SELECT @EmpName1;
2. 自定义函数的正确写法
DELIMITER // CREATE FUNCTION test() RETURNS VARCHAR(50) BEGIN DECLARE EmpName1 VARCHAR(50); SET EmpName1 = 'Ali'; RETURN EmpName1; END // DELIMITER ; -- 调用函数 SELECT test();
最终需求实现(单条查询结果赋值给变量)
不需要封装函数,直接在普通SQL上下文操作即可:
方式1:SET赋值
SET @result_str = (SELECT 你的字段名 FROM 你的表名 WHERE 筛选条件 LIMIT 1); -- 查看变量值 SELECT @result_str;
方式2:SELECT INTO赋值
SELECT 你的字段名 INTO @result_str FROM 你的表名 WHERE 筛选条件 LIMIT 1; -- 查看变量值 SELECT @result_str;
内容的提问来源于stack exchange,提问作者xvpnkr
相关产品推荐
相关产品推荐

