还有个问题: 有个表名存在变量中: declare tablename varchar(50); set tablename='aa';--本来用下面这句是可以删除aa表的, drop table if exists aa; 但现在用tablename变量,要怎么写呢? 谢谢
我测试了下,我也晕了delimiter $$ create procedure table_create(IN tablename varchar(100)) begin create table if not exists tablename (num int ); end$$ delimiter ; ]这段代码就是不能用,居然建立了一个表名叫tablename的表,向楼主借一个地盘求助下
判断表是否存在: 存储过程中: set @sign=0; select 1 into @sign from information_schema where table_name='aa' and table_schema='表aa所在数据库名称'; if @sign=0 then create table aa ..... end if;命令行: create table if not exists aa( 表定义 );
在5楼的帮助下写的一个存储过程,谢谢ACMAIN_CHM,学习了 在create table 存储过程的形式参数是无效的,使用预处理后就能够执行了delimiter $$ create procedure table_create(IN tablename varchar(100)) begin set @sql=concat("create table if not exists ",tablename,"(num int )"); prepare darwin FROM @sql; execute darwin; drop prepare darwin; end$$ delimiter ;
有个表名存在变量中:
declare tablename varchar(50);
set tablename='aa';--本来用下面这句是可以删除aa表的,
drop table if exists aa;
但现在用tablename变量,要怎么写呢? 谢谢
create procedure table_create(IN tablename varchar(100))
begin
create table if not exists tablename
(num int );
end$$
delimiter ;
]这段代码就是不能用,居然建立了一个表名叫tablename的表,向楼主借一个地盘求助下
存储过程中:
set @sign=0;
select 1 into @sign from information_schema
where table_name='aa' and table_schema='表aa所在数据库名称';
if @sign=0 then
create table aa .....
end if;命令行:
create table if not exists aa(
表定义
);
直接 create table IF NOT EXISTS xxxx (id int , ....
使用动态语句。set @sql = concat ("drop table ", tablename);
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
在create table 存储过程的形式参数是无效的,使用预处理后就能够执行了delimiter $$
create procedure table_create(IN tablename varchar(100))
begin
set @sql=concat("create table if not exists ",tablename,"(num int )");
prepare darwin FROM @sql;
execute darwin;
drop prepare darwin;
end$$
delimiter ;