MySQL的。无法创建存储过程

时间:2012-01-30 22:00:43

标签: mysql

我正在尝试创建我的第一个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;

有人知道错误在哪里吗?

1 个答案:

答案 0 :(得分:8)

因为在过程体中使用分号(;)作为分隔符,所以外部CREATE命令必须使用不同的分隔符。

DELIMITER $$
CREATE PROCEDURE add_company(
...
)$$
DELIMITER ;
相关问题