Como você vê - view não pode usar variáveis, é uma limitação. Você está tentando criar uma visualização com a condição WHERE exata; construa o texto da instrução CREATE VIEW primeiro, depois use declarações preparadas para executar a instrução, ela irá ajudá-lo. Mas, você realmente precisa disso, para criar, criar e criar uma nova visão?
EDIT:Este é o conteúdo da referência no comentário.
Olexandr Melnyk Uma solução simples para a limitação do MySQL no uso de variáveis locais em views é usar uma função, que retorna o valor da variável:
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();