我会收到错误:#1064-您的SQL语法中有一个错误;检查与您的MySQL Server版本相对应的手册,以获取合适的语法,该语法在GenReid INT(11(中使用,Out Albumname varchar(30((开始选择"在第1行"中选择" abnmame"
我的代码:
CREATE FUNCTION get_album_info_for_genre (IN GenreID INT(11), OUT AlbumName
VARCHAR(30))
BEGIN
SELECT AlbumName INTO NameOfAlbum FROM Albums WHERE GenreID=GenreID;
END
我在phpmyadmin中,我正在尝试为音乐数据库编写一些功能。我想编写一个显示艺术家名称,流派名称和专辑名称,如果用户选择特定类型(仅在该类型中显示专辑和艺术家(,或者如果他们选择艺术家Vice,反之亦然。
我认为我会从简单开始,然后根据他们选择的类型来展示orbumname。
如有必要,我的表结构是:
专辑:专辑ID,GenReid,ArtistId,oblammame
类型:类型,GenRename
艺术家:ArtistId,ArtistName
我尝试将其具有NA的位置更改为其他东西,但我仍然遇到了错误。我还尝试更改区别仪,但这也无济于事。请注意,默认情况下PhpMyAdmin具有;作为分隔线。我尝试在顶部和底部添加$$,但仍然有错误1064。由于某些原因,我在MySQL功能上找不到很多文章或视频。存储过程中有吨,但我已经搜索了4天,而我看到人们写功能的唯一地方是在Stackoverflow上。我查看了一些错误的问题,但是尝试了一些解决方案,但仍然一定缺少明显的东西。
编辑 - 我尝试更改语法以删除内外并获得相同的错误,但在不同的位置 - 在附近使用的语法 从专辑中选择" abledaf"的名称,其中genreid = genreid'在第2行
函数会带一个值并返回值。函数的语法不需要知道参数的方向(in或out(,因为逻辑上只有一个,但确实需要知道返回的内容的属性(由返回语句定义(。该函数中的返回语句完成了代码,并将变量传递给返回语句和函数退出。因此,此代码应该编译。如果您是从查询中执行此操作的,请从中更改定界符;to $$(不要忘记将其更改(。如果您是从"例程"选项卡键进行的。
CREATE DEFINER=`root`@`localhost` FUNCTION `get_album_info_for_genre`(`INGenreID` INT(11)) RETURNS VARCHAR(100) CHARSET latin1
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
BEGIN Declare outs varchar(100);
SELECT AlbumName INTO outs FROM Albums WHERE GenreID=INGenreID;
RETURN outs;
END
您可能必须弄清楚您的商店的定义者是谁。
注意 - 如果每种体裁有很多专辑,那么功能可能不是您想要的。