Mysql 如何参数化use语句?
目标是在mysql脚本中执行以下tripplet,并对Mysql 如何参数化use语句?,mysql,prepared-statement,Mysql,Prepared Statement,目标是在mysql脚本中执行以下tripplet,并对进行单一定义: 删除架构(如果存在) 创建架构默认字符集utf8 使用 接下来是一组create table命令,用于将表插入当前模式 我使用了用户变量@schema\u name像set@schema\u name='database'。这就需要准备上述sql语句: set @drop = concat('drop schema if exists ', @schema_name); set @create = concat('cr
进行单一定义:
删除架构(如果存在)
创建架构默认字符集utf8
使用
create table
命令,用于将表插入当前模式
我使用了用户变量@schema\u name
像set@schema\u name='database'
。这就需要准备上述sql语句:
set @drop = concat('drop schema if exists ', @schema_name);
set @create = concat('create schema ', @schema_name, ' default character set utf8');
set @use = concat('use ', @schema_name);
prepare st_drop from @drop;
prepare st_create from @create;
prepare st_use from @use;
execute st_drop;
execute st_create;
execute st_use;
问题是,use
语句不能以这种方式执行:
错误代码:1295。准备好的语句协议尚不支持此命令
是否有其他选项可以选择当前模式,如
use database
将
作为参数传递的选项?这通常通过动态SQL实现(在oracle中称为execute immediate
,在MSSQL中称为exec()
),但MySQL也不支持它,虽然可能是v6。mysql脚本是唯一的选项吗?您是否可以使用其他语言将这些语句构造为字符串并执行它?@Timekiller:是的,唯一的选项。该脚本相对较长,“手工编写”,手工维护,并将其完全重写为反映
的准备好的语句有点过火了。嗯。。。可能还有一条出路,您如何执行上述脚本?某种IDE、mysql源代码命令、mysql