MySql存储过程创建错误

标签 mysql stored-procedures

<分区>

我正在尝试使用以下代码在我的 mysql 数据库中创建一个存储过程。我收到一个错误。请帮助我解决

我的MySQl版本是5.0.51b

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25),
IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT)
  BEGIN
     INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) VALUES(firstName,lastName,lname,emailId,countryId,stateId)
  END

错误:


错误代码:1064 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 5 行的“END”附近使用的正确语法 (用了 0 毫秒)

最佳答案

lname-thing 不是错误消息的内容。您需要指定不同的分隔符。 MySQL 命令的默认分隔符是分号,但在语句末尾的存储过程中使用分号。在此示例中,我将分隔符更改为//,并使用它来结束该过程。这允许我在 block 内使用分号。

DELIMITER //

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25),
IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT)
BEGIN
   INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID)   VALUES(firstName,lastName,emailId,countryId,stateId);
END;
//

DELIMITER ;

一旦解决了分隔符位,您可能会收到有关 INSERT 命令和额外属性(姓氏两次)的错误。

关于MySql存储过程创建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728830/

相关文章:

mysql - 在 MySQL 查询中使用 SELECT 执行 INSERT INTO 时如何添加静态值?

mysql - 具有多列选择的 if 语句

postgresql - 扩展 PostgreSQL 存储过程

sql-server - 合并语句错误调试

mysql - SQL查询-表克隆

php - MySql 中的批量导入查询 - joomla

oracle - 使用 UTL_FILE.FRemove 从服务器删除文件而不知道文件名

c# - 使用 View 或存储过程在 Azure 移动应用程序中进行离线数据同步

oracle - PL/SQL 匿名 block 与 PL/SQL 过程 - ORA-01418 : specified index does not exist

php - 选择字段为空或使用查询生成器 Yii 的数据