MySQL创建过程声明变量问题

时间:2013-01-14 07:38:09

标签: mysql mysql-error-1364

我几天前就请求过这方面的帮助,我没有得到答复。或任何评论。 如果我变得讨厌,我很抱歉,我只是想用我可用的插座来完成我的课堂作业。

使用变量编写名为“AddNewAlbum”的过程。此过程至少需要两个参数 - NameOfArtist和AlbumName。程序将:

1.从Artist表中查找ArtistID,其中艺术家姓名为NameOfArtist

2.使用步骤1中找到的ArtistID和AlbumName参数

将新行插入到相册中

现在可以安全地假设艺术家在您运行此程序之前存在(意味着如果您调用AddNewAlbum('Bob Dylan','Street Legal');那么“Bob Dylan”已存在于Artist表中。

这就是我需要做的事情^

CREATE PROCEDURE AddNewAlbum (
NameOfArtist varchar(50),
AlbumName varchar(50)
)
BEGIN

DECLARE artist_id varchar(50);

SELECT ArtistID into artist_id
FROM Artists
WHERE ArtistName = NameOfArtist;

INSERT INTO Albums (Title)
VALUES (AlbumName);
END;
//

call AddNewAlbum (
"Bob Dylan",
"Street Legal"
);
//

错误1364(HY000):字段'ArtistID'没有默认值

这是错误返回。我试图用其他几种方法写这个,并且返回相同的错误。

1 个答案:

答案 0 :(得分:1)

试试这个。添加了一个默认值并稍微更新您的过程以匹配输入

CREATE PROCEDURE AddNewAlbum (
NameOfArtist varchar(50),
AlbumName varchar(50)
)
BEGIN

DECLARE artist_id INT DEFAULT 0;

SELECT ArtistID into artist_id
FROM Artists
WHERE ArtistName = NameOfArtist;

INSERT INTO Albums (ArtistID, Title)
VALUES (artist_id, AlbumName);
END;
//

call AddNewAlbum (
"Bob Dylan",
"Street Legal"
);
//