create procedure `添加维修业务`( INOUT 业主账号 VARCHAR(20), INOUT 房屋编号 VARCHAR(10), INOUT 维修类型 VARCHAR(20), OUT 维修单号 VARCHAR(20) ) AS BEGIN SET @维修单号 = CONCAT('id', LPAD(@维修单号, 10, '0')); INSERT INTO `维修业务表`(@维修单号,维修状态,投诉情况,业主账号,房屋编号,维修类型) VALUES(维修单号,'待处理','未投诉',业主账号,房屋编号,维修类型) END; 请问这段存储过程的代码有什么问题?为什么保存时报错invalid stored procedure syntax
时间: 2023-12-13 19:05:41 浏览: 79
这段存储过程的代码存在以下问题:
1. 在 SET 语句中,'@维修单号' 应该改为维修单号参数,即 @维修单号。
2. 在 INSERT INTO 语句中,维修单号应该是参数 @维修单号,而不是值维修单号。
因此,修改后的存储过程代码如下:
```sql
CREATE PROCEDURE `添加维修业务`(
INOUT 业主账号 VARCHAR(20),
INOUT 房屋编号 VARCHAR(10),
INOUT 维修类型 VARCHAR(20),
OUT 维修单号 VARCHAR(20)
)
BEGIN
SET @维修单号 = CONCAT('id', LPAD(@维修单号, 10, '0'));
INSERT INTO `维修业务表`(@维修单号, 维修状态, 投诉情况, 业主账号, 房屋编号, 维修类型)
VALUES (@维修单号, '待处理', '未投诉', 业主账号, 房屋编号, 维修类型);
END;
```
报错 "invalid stored procedure syntax" 可能是因为数据库不支持创建该存储过程,或者存储过程已经存在。请检查数据库支持的存储过程语法,或者尝试修改存储过程名称或参数等。
相关问题
create procedure wuyeglxt.`维修业务表`( INOUT 业主账号 VARCHAR(20), INOUT 房屋编号 VARCHAR(10), INOUT 维修类型 VARCHAR(20), OUT 维修单号 VARCHAR(20) ) AS BEGIN SET '维修单号' = CONCAT('id', LPAD('维修单号', 10, '0')); INSERT INTO `维修业务表`(维修单号,维修状态,投诉情况,业主账号,房屋编号,维修类型) VALUES(维修单号,'待处理','未投诉',业主账号,房屋编号,维修类型) END; 请问这段存储过程的代码有什么问题
这段存储过程的代码存在以下问题:
1. 在 SET 语句中,'维修单号' 应该改为维修单号参数,即 @维修单号。
2. 在 CONCAT 函数中,第一个参数应该是字符串 'id',而不是参数 '维修单号'。
3. 在 LPAD 函数中,第二个参数应该是 10,而不是字符串 '10'。
4. 在 INSERT INTO 语句中,维修状态和投诉情况应该分别为字符串值 '待处理' 和 '未投诉',而不是参数值。
因此,修改后的存储过程代码如下:
```sql
CREATE PROCEDURE `维修业务表`(
INOUT 业主账号 VARCHAR(20),
INOUT 房屋编号 VARCHAR(10),
INOUT 维修类型 VARCHAR(20),
OUT 维修单号 VARCHAR(20)
)
BEGIN
SET @维修单号 = CONCAT('id', LPAD(@维修单号, 10, '0'));
INSERT INTO `维修业务表`(维修单号, 维修状态, 投诉情况, 业主账号, 房屋编号, 维修类型)
VALUES (@维修单号, '待处理', '未投诉', 业主账号, 房屋编号, 维修类型);
END;
```
reads sql data在Delimiter$$ Create procedure student_info1(in sudentID int,in type int,out info varchar(20)) reads sql data Begin Case type When 1 then Select name into info From student Where num=sudentID When 2 then Select address into info from student Where id=studentID else select 'error ' into info; end case; end &&
这是一个存储过程,可以根据输入的学生ID和类型来查询学生的信息。如果类型为1,则查询该学生的姓名;如果类型为2,则查询该学生的地址;如果类型既不是1也不是2,则返回一个错误信息。查询结果会输出到一个名为"info"的输出参数中。
需要注意的是,此存储过程中的语法错误较多,应该先进行修正才能使用。比如,将"sudentID"改为"studentID",将"into info"改为"into @info",将"select 'error' into info"改为"set @info = 'error'"等等。
阅读全文