0

数日前にこれについて助けを求めましたが、返事がありませんでした。または任意のコメント。うるさくなったら申し訳ありませんが、授業を完了するために利用可能なコンセントを使用しようとしているだけです。

変数を使用して、「AddNewAlbum」というプロシージャを記述します。このプロシージャは、NameOfArtist と AlbumName の少なくとも 2 つのパラメーターを使用します。手順は次のとおりです。

1.Artist テーブルから ArtistID を検索します。ここで、アーティスト名は NameOfArtist です。

2. 手順 1 で見つけた ArtistID と AlbumName パラメータを使用して、Albums に新しい行を挿入します。

現時点では、この手順を実行する前にアーティストが存在すると想定しても問題ありません (つまり、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 に答える