大佬们帮我看一下这个代码有什么问题!谢谢

煜儿渔 2021-01-01 06:58:14
delimiter //

drop procedure if exists max//

CREATE PROCEDURE test()

declare st_date varchar(50);

SET st_date = date_format(now(),'%Y%m%d');

SELECT @sql = CONCAT(`INSERT INTO test_`,@st_date,`NAME`,`张三`);

PREPARE p1 FROM @sql;

EXECUTE p1;

DEALLOCATE PREPARE p1;

END

就是我想创建 每日往一个日期表里面的name插入数据 的程序 不知道这样写对不对
...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2021-01-02
  • 打赏
  • 举报
回复

-- 动态表名,只能动态语句了。

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;

煜儿渔 2021-01-02
  • 打赏
  • 举报
回复
引用 2 楼 卖水果的net 的回复:

-- 更简单一点的语法,一句话就够了。

CREATE PROCEDURE test1()
begin
insert into test values(date(now()), 'xs');
END //


多谢大佬!
煜儿渔 2021-01-02
  • 打赏
  • 举报
回复
大佬不是这个样的 就是那个表名是"test_+(20210102)"//当前日期 我想往这个表单的“name” 插入 “张三”!
卖水果的net 2021-01-02
  • 打赏
  • 举报
回复

-- 更简单一点的语法,一句话就够了。

CREATE PROCEDURE test1()
begin
insert into test values(date(now()), 'xs');
END //


卖水果的net 2021-01-02
  • 打赏
  • 举报
回复

-- 不用使用动态语句,下面的就可以了

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 //


56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧