想用oracle的存储过程动态建表

我想用oracle的存储过程方式动态建表,但是不会写,谁能帮我写一下呀,谢谢了传入参数:新建的表名hd+当前的年和月,例如hd_201105表结构是:字段1:id,类型是... 我想用oracle的存储过程方式动态建表,但是不会写,谁能帮我写一下呀,谢谢了
传入参数:新建的表名hd+当前的年和月,例如hd_201105
表结构是:字段1:id ,类型是number,可以自动增加
字段2:name 类型是varcha2,长度20
字段3:city 类型是varchar2,长度20
展开
 我来答
CrazyHerozk
2011-05-24 · 超过30用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:59.8万
展开全部
建立序列:
create sequence t_id
increment by 1
start with 1
nomaxvalue
cache 20;
建立自动建表过程:
create or replace procedure pro_createtable(tname in varchar2 default to_char(sysdate,'yyyymm'))
as
v_sql varchar2(200);
v_tname varchar2(10);
begin
if length(tname)<>6 then
raise_application_error(-20000,'输入参数长度不够,不能转换为日期格式!');
end if ;
if to_number(substr(tname,5,2)) not between 1 and 12 then
raise_application_error(-20001,'输入参数中不包含有效的月份数字,不能转换为日期格式!');
end if ;
--v_tname:=to_char(to_date(tname,'yyyymm'),'yyyymm');
v_tname:='hd_'||tname;
v_sql:='create table '||v_tname||' ('||
'id number not null,'||
'name varchar2(20),'||
'city varchar2(20))'||
'tablespace users';
execute immediate v_sql;
end;
测试:
begin
pro_createtable;
pro_createtable('201106');
pro_createtable('201115');--报错
end;
今至电子科技有限公司
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整... 点击进入详情页
本回答由今至电子科技有限公司提供
百度网友23809e7
2011-05-24 · TA获得超过394个赞
知道小有建树答主
回答量:380
采纳率:100%
帮助的人:282万
展开全部
create or replace procedure createTable(tablename varchar2) is
sqlstr varchar2(200);
begin
sqlstr:='create table '||tablename||'hd'||to_char(sysdate,'yyyymm')||' (id number(10),name varchar2(20),city varchar2(20))';
execute immediate sqlstr;
commit;
end createTable;

测试通过,搞定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
panhq2006
2011-05-24 · 超过27用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:59.6万
展开全部
上面做的严密性很强啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式