oracle 创建表名为当前日期的表
发布网友
发布时间:2022-04-26 00:01
我来回答
共3个回答
热心网友
时间:2022-04-12 14:15
oracle中无法创建以全数字命令的表,必须要带有其他字母,可用如:T_日期 的格式。
单纯创建手动执行即可:
create table T_20151223
(id int,
name varchar2(10));
但一般情况,日期为动态(即随时间变化而变化),则需要用存储过程创建:
declare
v_date varchar2(8);--定义日期变量
v_sql varchar2(2000);--定义动态sql
v_tablename varchar2(20);--定义动态表名
begin
select to_char(sysdate,'yyyymmdd') into v_date from al;--取日期变量
v_tablename := 'T_'||v_date;--为动态表命名
v_sql := 'create table '||v_tablename||'
(id int,
name varchar2(20))';--为动态sql赋值
dbms_output.put_line(v_sql);--打印sql语句
execute immediate v_sql;--执行动态sql
end;
热心网友
时间:2022-04-12 15:33
create or replace procere kk ---创建存储过程KK
is
s varchar2(2000);
s:='
create table aaa'||to_char(sysdate,'yyyymmdd')||' as
select * from tab';
execute immediate s;
end kk;
执行KK就OK了。
创建一个aaa20100122的表,表的内容是当前用户的所有表名信息~~
这是我目前所知道的了~~
热心网友
时间:2022-04-12 17:08
select 'TEST_' || to_char(sysdate, 'yyyymmdd') as tabname from al;
上面这句,把into换成as,或者不写。
你说的不想用那个系统时间,那就用你的sdate变量替换 sysdate ,不就行了么。