我是MySql的新手,我的存储过程有问题。我正在尝试为插入创建一个新的sp:
CREATE DEFINER = CURRENT_USER PROCEDURE
`NewProc`
(
IN `PCountryId` binary(16),
IN `PCountryName` varchar(50),
IN `PCountryLongitude` float,
IN `PCountryLatitude` float
)
BEGIN
INSERT INTO
country
(
CountryId,
CountryName,
CountryLongitude,
CountryLatitude
)
VALUES
(
PCountryId,
PCountryName,
PCountryLongitude,
PCountryLatitude
)
END;
但是当我尝试运行时我得到了这个错误:
[Err] 1064 - 你的错误 SQL语法;检查手册 对应于您的MySQL服务器 用于正确语法的版本 在第25行'END'附近
你能帮我解决这个问题吗?
谢谢
修改
当我删除定义者时
DEFINER = CURRENT_USER
它工作正常。
答案 0 :(得分:0)
默认DEFINER值为CURRENT_USER。
MySQL 5.0手册12.1.9。:
如果您没有SUPER 特权,唯一的合法用户价值 是您指定的帐户 字面上或使用CURRENT_USER。 您无法将定义器设置为某些定义器 其他帐户。
答案 1 :(得分:0)
存储过程中的分隔符必须与当前分隔符不同,因此您必须编写如下过程:
(免责声明:我没有测试您的程序,因此可能存在其他适用的问题)
DELIMITER $$
DROP PROCEDURE IF EXISTS NewProc $$
CREATE DEFINER = CURRENT_USER PROCEDURE
`NewProc`
(
IN `PCountryId` binary(16),
IN `PCountryName` varchar(50),
IN `PCountryLongitude` float,
IN `PCountryLatitude` float
)
BEGIN
INSERT INTO
country
(
CountryId,
CountryName,
CountryLongitude,
CountryLatitude
)
VALUES
(
PCountryId,
PCountryName,
PCountryLongitude,
PCountryLatitude
);
END $$
DELIMITER ;