mysql 在存储过程中插入语句未插入

标签 mysql stored-procedures insert sql-insert

我创建了一个存储过程,它应该执行以下操作: 插入 Agencies 表,在 PK 索引行中创建一个 id 将 id 保存在变量中 将id和其他数据插入Users表

下面的语法不会触发任何错误:

DELIMITER $$

CREATE PROCEDURE insertNewAgencyAndAdmin (IN aName varchar (100), IN numTrav int, IN polType int, IN uEmail varchar(255), IN uFName varchar(40), IN uLName varchar(40), IN uTitle varchar(100))
BEGIN

INSERT INTO btsAgency.Agencies (agencyName, numTrav, polType) VALUES (@aName, @numTrav, @polType);

SET @agencyID = (SELECT agencyID from btsAgency.Agencies where agencyID = LAST_INSERT_ID());

INSERT INTO btsUsers.Users (userAgencyID, userEmail, userFirstName, userLastName, userTitle ) VALUES 
(@agencyID, @uEmail, @uFName, @uLName, @uTitle);

END

但是,存储过程在执行时不会将我的参数插入表中。因此,在搜索之后,我尝试创建这样的 SP(包括“END”之后的 $$ 并将分隔符重置为分号):

DELIMITER $$

CREATE PROCEDURE insertNewAgencyAndAdmin (IN aName varchar (100), IN numTrav int, IN polType int, IN uEmail varchar(255), IN uFName varchar(40), IN uLName varchar(40), IN uTitle varchar(100))
BEGIN

INSERT INTO btsAgency.Agencies (agencyName, numTrav, polType) VALUES (@aName, @numTrav, @polType);

SET @agencyID = (SELECT agencyID from btsAgency.Agencies where agencyID = LAST_INSERT_ID());

INSERT INTO btsUsers.Users (userAgencyID, userEmail, userFirstName, userLastName, userTitle ) VALUES 
(@agencyID, @uEmail, @uFName, @uLName, @uTitle);

END $$
DELIMITER ;

MySql 创建存储过程,但出现以下错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“DELIMITER”附近使用的正确语法

当我执行创建的存储过程时,它仍然没有在我的参数中插入数据。

如有任何帮助,我们将不胜感激。

最佳答案

存储过程中的一些问题:

DELIMITER $$

CREATE PROCEDURE `insertNewAgencyAndAdmin` (
  /*    
  IN `aName` varchar (100),
  IN `numTrav` int,
  IN `polType` int,
  IN `uEmail` varchar(255),
  IN `uFName` varchar(40),
  IN `uLName` varchar(40),
  IN `uTitle` varchar(100)
  */
  IN `_aName` varchar (100),
  IN `_numTrav` int,
  IN `_polType` int,
  IN `_uEmail` varchar(255),
  IN `_uFName` varchar(40),
  IN `_uLName` varchar(40),
  IN `_uTitle` varchar(100)
)
BEGIN
  /*  
  INSERT INTO `btsAgency`.`Agencies` (
    `agencyName`,
    `numTrav`,
    `polType`
  ) VALUES (
    @`aName`,
    @`numTrav`,
    @`polType`
  );
  */    
  INSERT INTO `btsAgency`.`Agencies` (
    `agencyName`,
    `numTrav`,
    `polType`
  ) VALUES (
    `_aName`,
    `_numTrav`,
    `_polType`
  );    
  /*
  SET @`agencyID` = (SELECT `agencyID` from `btsAgency`.`Agencies` where `agencyID` = LAST_INSERT_ID());

  INSERT INTO `btsUsers`.`Users` (
    `userAgencyID`,
    `userEmail`,
    `userFirstName`,
    `userLastName`,
    `userTitle`
  ) VALUES (
    @`agencyID`,
    @`uEmail`,
    @`uFName`,
    @`uLName`,
    @`uTitle`
  );
  */    
  INSERT INTO `btsUsers`.`Users` (
    `userAgencyID`,
    `userEmail`,
    `userFirstName`,
    `userLastName`,
    `userTitle`
  ) VALUES (
    LAST_INSERT_ID(),
    `_uEmail`,
    `_uFName`,
    `_uLName`,
    `_uTitle`);
END$$

DELIMITER ;

关于mysql 在存储过程中插入语句未插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086496/

相关文章:

mysql - 查询内部的计算

php - Postgresql自定义函数返回表

C 在链表开头插入元素

.net - 自动/智能插入 "itself"对象

mysql order by 子句不适用于我的查询

MySQL 不等于 - 不工作

php - 通过表从数据库中删除记录

MySQL 过程 : error in fetch

sql - 在 PL/SQL 存储过程中返回自定义类型

Java Servlet 插入 MySQL