CREATE DEFINER=`root`@`%` FUNCTION `GET_CHILD_NODE`(org_code VARCHAR(100)) RETURNS VARCHAR(2000) CHARSET utf8mb4 BEGIN DECLARE str VARCHAR(2000); DECLARE cid varchar(100); SET str = '$'; SET cid = org_code; WHILE cid is not null DO SET str = concat(str, ',', cid); SELECT group_concat(org_code) INTO cid FROM SM_ORG_TB where FIND_IN_SET(PARENT_ORG_CODE, cid); END WHILE; RETURN str; END
时间: 2024-03-28 17:40:21 浏览: 75
看起来你的代码语法没有问题。请问报错信息是否一致?如果是,请尝试检查以下几点:
1. 是否在代码的其他部分存在语法错误,例如在函数声明之前或之后的语句中。
2. 是否在运行该函数之前创建了 SM_ORG_TB 表,或者该表的名字是否正确。
3. 是否有权限调用该函数,例如是否使用了正确的授权用户。
如果以上问题都没有解决,可以尝试将函数的定义放在单独的 SQL 文件中,然后执行该文件,看看是否仍然报错。
相关问题
CREATE DEFINER=root@localhost PROCEDURE doctor_schedule(IN d_id INT) BEGIN SELECT doctor.d_name, work.work_start, work.work_end,work.work_state FROM doctor JOIN work ON doctor.d_id = work.d_id WHERE d_id = d_id;怎么调用
您可以使用CALL语句来调用该存储过程,语法如下:
```
CALL doctor_schedule(参数);
```
其中,参数为整型值,用于指定医生的ID。例如,如果要获取医生ID为1的医生的工作安排,可以执行以下语句:
```
CALL doctor_schedule(1);
```
执行后,将返回医生名称,工作开始时间,工作结束时间和工作状态的结果集。
CREATE DEFINER=`root`@`%` FUNCTION `GET_CHILD_NODE`(org_code varchar(100)) RETURNS varchar(2000) CHARSET utf8mb4 BEGIN DECLARE str varchar(2000) 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
从错误信息看,可能是因为你在 DECLARE 声明变量时没有指定变量的长度,导致语法错误。可以尝试将 DECLARE str varchar(2000) 修改为 DECLARE str VARCHAR(2000),其中 VARCHAR 表示变量的数据类型,2000 表示变量的长度。修改后的代码如下:
```
CREATE DEFINER=`root`@`%` FUNCTION `GET_CHILD_NODE`(org_code VARCHAR(100)) RETURNS VARCHAR(2000) CHARSET utf8mb4
BEGIN
DECLARE str VARCHAR(2000);
-- 其他语句
END
```
你可以根据自己的实际需求修改变量的数据类型和长度。注意,不同版本的 MySQL 对 DECLARE 的支持可能略有不同,如果问题仍然存在,可以进一步检查语法错误。
阅读全文