mysql 在存储过程中插入语句不插入
mysql Insert Statements in Stored Procedure not Inserting
我创建了一个应该执行以下操作的存储过程:
插入 Agencies Table,在 PK 索引行中创建一个 id
将 id 保存在变量中
将 id 和其他数据插入 Users table
下面的语法不会触发任何错误:
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
但是,存储过程在执行时不会将我的参数插入到 table 中。因此,在搜索之后,我尝试像这样创建 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' 附近使用的正确语法
当我执行创建的存储过程时,它仍然没有在我的参数中插入数据。
如有任何帮助,我们将不胜感激。
你的存储过程中的一些问题:
重要的是要指出9.4. User-Defined Variables and routine parameters 13.1.15. CREATE PROCEDURE and CREATE FUNCTION Syntax之间的区别,是不同的变量(例如:aName
!= @aName
)。
避免将参数或变量命名为表的列。
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 ;
SELECT * 从折扣 $$
分隔符 $$;
CREATE PROCEDURE insertData(IN id int,IN title varchar(255),IN amount decimal)
开始
插入折扣值 (id,title,amount);
结尾; $$
调用 insertData(3,"sadasd",56);
/*删除过程 insertData */
我创建了一个应该执行以下操作的存储过程: 插入 Agencies Table,在 PK 索引行中创建一个 id 将 id 保存在变量中 将 id 和其他数据插入 Users table
下面的语法不会触发任何错误:
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
但是,存储过程在执行时不会将我的参数插入到 table 中。因此,在搜索之后,我尝试像这样创建 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' 附近使用的正确语法当我执行创建的存储过程时,它仍然没有在我的参数中插入数据。
如有任何帮助,我们将不胜感激。
你的存储过程中的一些问题:
重要的是要指出9.4. User-Defined Variables and routine parameters 13.1.15. CREATE PROCEDURE and CREATE FUNCTION Syntax之间的区别,是不同的变量(例如:
aName
!=@aName
)。避免将参数或变量命名为表的列。
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 ;
SELECT * 从折扣 $$ 分隔符 $$; CREATE PROCEDURE insertData(IN id int,IN title varchar(255),IN amount decimal) 开始
插入折扣值 (id,title,amount); 结尾; $$ 调用 insertData(3,"sadasd",56);
/*删除过程 insertData */