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

时间:2015-10-12 17:00:40

标签: mysql stored-procedures insert sql-insert

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

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

<div id="wrapper">
  <div id="inner">Foo</div>
</div>

但是,Stored Proc在执行时不会将我的参数插入表中。因此,在搜索之后我尝试像这样创建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

MySql创建存储过程但是给出了以下错误:

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

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

存储过程中的一些问题:

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 ;

答案 1 :(得分:0)

SELECT * FROM discounts $$ 分隔符$$; CREATE PROCEDURE insertData(IN id int,IN title varchar(255),IN amount decimal) BEGIN

插入折扣价值(id,title,amount); 结束; $$ call insertData(3,&#34; sadasd&#34;,56);

/ * DROP PROCEDURE insertData * /