MySQL视图带有一个创建输入变量的函数

aHu*_*ter 4 mysql

是否有可能在MySQL中创建一个SQL视图,它将输入变量视为函数参数?我在MySQL网站上找到了这个标题,但我不确定如何使用它,因为我对SQL函数很新.当我在MySQL命令提示符下运行它时,它给了我错误.此外,我不确定这是否是我想要的?

create function book_subject
returns varchar(64) as
return @book_subject;

create view thematical_books as
select title, author
from books
where subject = book_subject();
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 5

您收到错误,因为CREATE FUNCTION语法不正确(必须喜欢那些MySQL手册用户评论!).创建此函数的正确语法如下:

CREATE FUNCTION book_subject()
RETURNS VARCHAR(64)
RETURN @subject;
Run Code Online (Sandbox Code Playgroud)

CREATE VIEW语法是正确的.

要使用该视图,您需要@book_subject在从视图中选择之前设置变量:

SET @book_subject = 'Epic Poems';
Run Code Online (Sandbox Code Playgroud)

那么当你做一个:

SELECT * 
FROM   thematical_books;
Run Code Online (Sandbox Code Playgroud)

它将返回所有具有"史诗诗"主题的书籍的标题和作者

这是解决MySQL视图限制的一个技巧,"[视图]的SELECT语句不能引用系统或用户变量." 您使用仅返回变量的函数,并且每次使用视图时都会调用该函数.