我正在尝试创建我的第一个mysql存储过程,但由于某些语法错误,脚本无法正常工作。对于熟悉mysql数据库的人来说,这个问题看起来很容易。
表创建脚本:
CREATE TABLE `companies` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` TINYTEXT NOT NULL,
`full_name` TINYTEXT NULL,
`region_id` INT(11) NULL DEFAULT NULL,
`address` TINYTEXT NULL,
`legal_address` TINYTEXT NULL,
`main_phone` TINYTEXT NULL,
`inn` TINYTEXT NULL,
`bank` TINYTEXT NULL,
`bic` TINYTEXT NULL,
`bank_account` TINYTEXT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `U_COMPANY_MAIN_PHONE` (`main_phone`(100)),
INDEX `FK_COMPANY_REGION_ID` (`region_id`),
CONSTRAINT `FK_COMPANY_REGION_ID` FOREIGN KEY (`region_id`) REFERENCES `regions` (`id`)
)
存储过程代码为:
create procedure add_company(
in p_name TINYTEXT,
in p_full_name TINYTEXT,
in p_region_id INT,
in p_address TINYTEXT,
in p_legal_address TINYTEXT,
in p_main_phone TINYTEXT,
in p_inn TINYTEXT,
in p_bank TINYTEXT,
in p_bic TINYTEXT,
in p_bank_account TINYTEXT
)
begin
insert into companies(
name,
full_name,
region_id,
address,
legal_address,
main_phone,
inn,
bank,
bic,
bank_account
)
values (
p_name,
p_full_name,
p_region_id,
p_address,
p_legal_address,
p_main_phone,
p_inn,
p_bank,
p_bic,
p_bank_account
);
end;
有人知道错误在哪里吗?
答案 0 :(得分:8)
因为在过程体中使用分号(;)作为分隔符,所以外部CREATE命令必须使用不同的分隔符。
DELIMITER $$
CREATE PROCEDURE add_company(
...
)$$
DELIMITER ;