MySQL创建过程声明变量问题

MySQL创建过程声明变量问题,mysql,mysql-error-1364,Mysql,Mysql Error 1364,几天前,我曾就此寻求帮助,但没有得到答复。或任何评论。 我很抱歉,如果我变得烦人,我只是想用我可用的插座来完成我的课堂作业 使用变量编写名为“AddNewAlbum”的过程。此过程至少接受两个参数—NameOfArtist和AlbumName。该程序将: 1.从Artist表中查找ArtistID,其中Artist name是Artist的名称 2.使用步骤#1中的ArtistID和AlbumName参数,在相册中插入新行 目前,在运行此过程之前,可以安全地假设艺术家存在(这意味着如果调用Add

几天前,我曾就此寻求帮助,但没有得到答复。或任何评论。 我很抱歉,如果我变得烦人,我只是想用我可用的插座来完成我的课堂作业

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

1.从Artist表中查找ArtistID,其中Artist name是Artist的名称

2.使用步骤#1中的ArtistID和AlbumName参数,在相册中插入新行

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

这就是我需要做的^

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”没有默认值


这就是返回的错误。我尝试用其他几种方法编写此错误,但返回的错误相同。

尝试此错误。添加默认值并稍微更新您的过程以匹配输入

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"
);
//

为什么要用两个参数调用此过程
“Bob Dylan”,“Street Legal”
,而它只有一个参数
Artist varchar(50)
?噢,我很抱歉,应该说。创建过程AddNewAlbum(Artist varchar(50)的名称,AlbumName varchar(50)等等,我会很快编辑它。为什么艺术家id是varchar(50)?谢谢你,Tikkes。我刚刚用了这个,看起来它工作正常。我认为这是一个简单的问题,但我无法理解。我很感激。