Вы не можете просто разместить заполнитель там, где вам нравится.Заполнители параметров могут появляться только в тех местах внутри оператора, где вы обычно ожидаете выражения.В частности, нельзя использовать заполнители параметров для параметризации идентификаторов или целых структур операторов.Вот почему ваша попытка не удалась.
В блоге Roland Bouman -> MySQL 5: Синтаксис подготовленного оператора и Dynamic SQL . * Можно найти много других полезных вещей, касающихся подготовленных операторов и динамического SQL в MYSQL.1005 *
Если вы планируете использовать что-то вроде:
prepare test
from
'select * from ?' ;
set @myt := 'myTable' ;
execute test
using @myt ;
, оно просто не будет работать.Но вы можете обойти это с:
set @myt := 'myTable'
set @qtext := concat('select * from ',@myt) ;
prepare test
from @qtext ;
execute test ;