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 08:04:47 浏览: 70
DELIMITER $是MySQL中的一个命令,用于设置自定义的结束符。在设置之后,MySQL就会将代码块中的';'作为普通字符,直到遇到自定义的结束符$才会认为语句结束。这样可以方便地在存储过程和函数中使用多个语句。
相关问题
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 ; 该存储过程是否正确
该存储过程存在语法错误,主要是在设置filePath变量时使用了不正确的字符串拼接方式。正确的语法应该是:
SET filePath = CONCAT("export/", companyId, "/record/", exuuid, ".xlsx");
解释一下数据库代码什么意思delimiter // ysg1>create procedure p_student ( begin ->select *from student;end/luery 0K,0 rows affected (0.01 sec) wysql> cal1 p student0//RROR 1064 (42000): You have an error in your SQL syntax; check thwysql>delimiter//wysql>create procedure p_student(0)begin->select * from student.->end/!RROR 1304 (42000): PROCEDURE p_student already existswysql> delimiter //uysql> create procedure p_student -> beginselect* from student;end/!
这是一个 MySQL 存储过程的创建语句。存储过程是一些预定义 SQL 语句的集合,可以被多次调用。这个存储过程名字叫做 `p_student`。
在这个例子中,使用了 `delimiter` 命令来改变语句结束符号为 `//`,以便在存储过程中使用分号。这个命令告诉 MySQL 解释器,当遇到 `//` 时,表示当前语句的结束。这样可以避免在存储过程中使用分号时出现歧义。
第一个例子中的存储过程定义有一些语法错误。`create procedure p_student ( begin ->select *from student;end/` 中的括号后面没有加上 `)` 符号,而且在 `end/` 后面多了一个冒号。另外,查询语句的后面缺少了分号。
第二个例子中,正确使用了 `delimiter` 命令,并定义了一个名为 `p_student` 的存储过程,其中的查询语句是 `select * from student;`,它会返回 `student` 表中的所有数据行。
第三个例子中,存储过程 `p_student` 已经存在了,因此不能再次创建同名的存储过程。如果想要更新已有的存储过程,可以使用 `alter procedure` 命令。
阅读全文