56,679
社区成员
发帖
与我相关
我的任务
分享
-- 动态表名,只能动态语句了。
create table test_20210102(crdate date, name varchar(10));
delimiter //
drop procedure if exists test1//
CREATE PROCEDURE test1()
begin
SET @st_date = date_format(now(),'%Y%m%d');
SET @name = '张三';
set @sql = CONCAT('INSERT INTO test_', @st_date, '(crdate, name) values (?, ?)');
PREPARE p1 FROM @sql;
EXECUTE p1 using @st_date, @name;
DEALLOCATE PREPARE p1;
select @st_date, @name, @sql a;
END//
call test1();
select * from test_20210102;
-- 更简单一点的语法,一句话就够了。
CREATE PROCEDURE test1()
begin
insert into test values(date(now()), 'xs');
END //
-- 不用使用动态语句,下面的就可以了
create table test(crdate date, name varchar(10));
delimiter //
drop procedure if exists test1//
CREATE PROCEDURE test1()
begin
declare st_date varchar(50);
SET st_date = date_format(now(),'%Y%m%d');
INSERT INTO test values(st_date,'张三');
END //