DELIMITER $ CREATE PROCEDURE `se_energy-saving_store`(IN companyId VARCHAR(50),IN exuuid VARCHAR(50), OUT exuuid VARCHAR(50),OUT filePath VARCHAR(255)) BEGIN -- DECLARE声明 用来声明变量的 DECLARE exuuid VARCHAR(50) DEFAULT ''; SET exuuid = exuuid; DECLARE filePath VARCHAR(255) DEFAULT ''; SET filePath = "export/"+companyId+"/record/"+exuuid+".xlsx"; -- 输出 SELECT exuuid; SELECT filePath; END $ DELIMITER ; 该存储过程是否正确
时间: 2023-05-26 12:04:49 浏览: 61
该存储过程存在语法错误,主要是在设置filePath变量时使用了不正确的字符串拼接方式。正确的语法应该是:
SET filePath = CONCAT("export/", companyId, "/record/", exuuid, ".xlsx");
相关问题
DELIMITER $ #‘$’代表着语句的结束 CREATE PROCEDURE `se_energy-saving_store`(IN companyId VARCHAR(50),IN exuuid VARCHAR(50), OUT exuuid VARCHAR(50),OUT filePath VARCHAR(255)) BEGIN -- DECLARE声明 用来声明变量的 DECLARE exuuid VARCHAR(50) DEFAULT ''; SET exuuid = exuuid; DECLARE filePath VARCHAR(255) DEFAULT ''; SET filePath = "export/"+companyId+"/record/"+exuuid+".xlsx"; -- 输出 SELECT exuuid; SELECT filePath; END $ #存储过程结束 DELIMITER ; #修改语句结束的标识符为‘;’是否正确
DELIMITER $是MySQL中的一个命令,用于设置自定义的结束符。在设置之后,MySQL就会将代码块中的';'作为普通字符,直到遇到自定义的结束符$才会认为语句结束。这样可以方便地在存储过程和函数中使用多个语句。
DELIMITER $$ CREATE PROCEDURE set_stu_score ( IN stu_id VARCHAR(20), IN course_id VARCHAR(20), IN score DECIMAL(5,2) ) BEGIN UPDATE choose SET score = score WHERE student_id = stu_id AND course_id = course_id; END $$ DELIMITER ; -- 执行存储过程 CALL set_stu_score('201810101101', '1001', 90);
您的代码几乎正确,但是有一个小错误:在UPDATE语句中,score = score并没有改变原有的score值,需要将它改成score = @score。另外,存储过程中的table名字是choose,而不是student_course,如果您的数据库中不存在choose表,需要将表名改成您的表名。
以下是经过修改后的代码:
```sql
DELIMITER $$
CREATE PROCEDURE set_stu_score (
IN stu_id VARCHAR(20),
IN course_id VARCHAR(20),
IN score DECIMAL(5,2)
)
BEGIN
UPDATE choose
SET score = @score
WHERE student_id = stu_id AND course_id = course_id;
END $$
DELIMITER ;
-- 执行存储过程
CALL set_stu_score('201810101101', '1001', 90);
```
注意,我们在存储过程中使用了参数@score来更新成绩,参数名字与传入的参数score不一样,这是因为参数名字和列名字相同会导致歧义。同时,我们在调用存储过程时,需要使用CALL命令。如果您的存储过程执行成功,会返回一个"Query OK"的提示信息。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)