【发布时间】:2013-01-14 07:38:08
【问题描述】:
几天前我曾就此寻求帮助,但没有得到答复。或任何cmets。 如果我变得烦人,我深表歉意,我只是想利用我可用的渠道来完成我的课堂作业。
使用一个变量来编写一个名为“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”没有默认值
那是返回的错误。我尝试用其他几种方式编写此代码,但返回相同的错误。
【问题讨论】:
-
为什么你用两个参数
"Bob Dylan", "Street Legal"调用这个过程,而它只有一个参数NameOfArtist varchar(50)? -
哦,对不起,应该说。 CREATE PROCEDURE AddNewAlbum ( NameOfArtist varchar(50), AlbumName varchar(50) 等等我会很快编辑的。
-
为什么 artist_id 是 varchar(50) ?