0

几天前我曾寻求帮助,但没有得到答复。或任何评论。如果我变得烦人,我深表歉意,我只是想使用可用的渠道来完成我的课堂作业。

使用一个变量来编写一个名为“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' 没有默认值

那是返回的错误。我试图用其他几种方式来写这个,并且同样的错误返回。

4

1 回答 1

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"
);
//
于 2013-01-14T07:55:06.833 回答