gpt4 book ai didi

mysql - 使用存储过程从表中插入和选择

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:59 27 4
gpt4 key购买 nike

我目前对我正在参加的在线类(class)的目标有疑问。目标低于此,我正在使用的代码以及我收到的错误将低于此。

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

1.从艺术家表中查找艺术家ID,其中艺术家名称为NameOfArtist

2.Insert a new row into Albums, using the ArtistID found in step #1 和 AlbumName 参数

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

CREATE PROCEDURE AddNewAlbum (
NameOfArtist varcahr(50),
AlbumName varchar(50)
)
BEGIN
SELECT ArtistID, ArtistName FROM Artists
WHERE ArtistName = 'NameOfArtist';

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

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

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

^ 是我收到的错误。谁能看到我做错了什么?我试着引用 WHERE ArtistName = 'NameOfArtist';但这没有用。

我想补充一点,它正在提取艺术家姓名和艺术家 ID,但不会将新行添加到相册。

最佳答案

你可以使用 INSERT INTO...SELECT 声明,

DELIMITER $
CREATE PROCEDURE AddNewAlbum
(
@NameOfArtist varchar(50),
@AlbumName varchar(50)
)
BEGIN
INSERT INTO Albums (ID, Title)
SELECT ArtistID, @AlbumName AS Title
FROM Artists
WHERE ArtistName = @NameOfArtist;
END $
DELIMITER ;

关于mysql - 使用存储过程从表中插入和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14120285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com