当前位置:首页 » 存储配置 » oracle存储过程建表

oracle存储过程建表

发布时间: 2022-08-04 08:46:46

⑴ oracle存储过程中建表

首先根据需求,想好需要建哪些字段,哪些是主键,建在哪个表空间下,另外字段类型也要考虑好,因为一旦建成表往里面插入数据后,字段类型就不容易更改了
表建成之后,如果数据量很大,应该考虑建立针对某字段的索引。

⑵ 如何在Oracle的存储过程中建表啊

可以在存储过程中使用execute immediate 'sql';子句来创建表,例如Execute Immediate 'create table test(id int)';

⑶ oracle存储过程创建表

CREATE OR REPLACE PROCEDURE list_xs_name as
str_sql varchar2(2000);
begin
str_sql := 'create global temporary table xs_name (xh int,name varchar2(255),kc varchar2(255),fs int) on commit preserve rows';
execute immediate str_sql;
str_sql := 'select * from xs_name';
execute immediate str_sql;
dbms_output.put_line(str_sql);
END;

⑷ oracle 存储过程建表

这个过程就行了。。
create or replace procere wym
authid current_user
is
vn_ctn number(2);
begin
select count(*) into vn_ctn from user_all_tables a where a.table_name like upper('invbasdoc');
if vn_ctn > 0 then
execute immediate 'drop table invbasdoc';
end if;
execute immediate 'create table invbasdoc as select * from test_abcd';
end ;

原来的过程中:execute immediate 'drop table invbasdoc'; 当如果数据库中不存在这张表的时候就会报错的。。
上面是对数据库中是否存在表进行了判断,因此能够避免“表不存在”这样的错误。。

⑸ ORACLE存储过程创建临时表并插入数据。

存储过程创建表后,在编译阶段数据库中并没有该表。这时向表中插入数据,会提示表不存在。所以,插入语句要赋值到变量里,通过e来执行。

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

建立序列:
create sequence t_id
increment by 1
start with 1
nomaxvalue
cache 20;
建立自动建表过程:
create or replace procere 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;

⑺ 如何在oracle中使用存储过程创建表,如果存在就先删除

没有权限?具体点 或者贴图!
不过应该是没有create table和drop table的权限吧,你试试赋下给此用户看看

⑻ ORACLE存储过程中,可以动态创建表么

需要用到动态sql。
1、首先要给用户赋予权限:
grant create any table to 用户名;
2、创建存储过程:
create procere p_create_table
(v_sql varchar2)--输入建表语句
as
begin
execute immediate v_sql;
end;
3、执行:

⑼ oracle如何用存储过程建表

说的不明白
1.建什么样的表?
2.字段是怎么样的变量?
3.表内的数据怎么来?仅仅是一个表吗?

参数是怎么来的?输入的参数还是按照日期来的?
变量名是怎么来的?手动输入的字段名参数还是怎么?
我看你就把你想做什么说出来,你这样没法弄
----------------------------------------------------------------------
PROCEDURE SP_CREATE_new_table
(
on_flag OUT NUMBER,
out_reason OUT VARCHAR2
)
is
v_sql1 varchar2(2000);
v_a varchar2(1);
v_b varchar2(1);
v_c varchar2(1);

begin

select 'a' into v_a from al;
select 'b','c' into v_b,v_c from al;

v_sql1 :='create table '||v_a||'('||v_b||' varchar2(1),'||v_c||' varchar2(1))';
EXECUTE IMMEDIATE v_sql1;

commit;

EXCEPTION
WHEN OTHERS
THEN
on_flag := SQLCODE;
out_reason := SUBSTR (SQLERRM, 1, 255);
ROLLBACK;
END;

有什么看不懂的就问吧
运行后,执行select * from a;
表名就叫a,字段名叫b和c,都是按你说的

⑽ ORACLE 存储过程如何实现动态建表或者是触发器

需求没说清楚,你说建立的新表有什么需求?什么叫每插入一条记录都会自动添加匹配的其他三表的字段值? 你在新表插数据和旧表有什么关系?新表的字段不是你自己定义的?去和什么匹配

热点内容
京东微信密码是多少 发布:2024-10-05 10:28:48 浏览:485
粘连算法 发布:2024-10-05 10:10:45 浏览:646
php监控进程 发布:2024-10-05 09:37:06 浏览:49
企业密信怎么找回服务器代码 发布:2024-10-05 09:33:19 浏览:228
怎么用电脑开mc服务器 发布:2024-10-05 09:25:01 浏览:408
linux目录乱码 发布:2024-10-05 09:24:24 浏览:171
欧姆龙plc有密码如何传送 发布:2024-10-05 09:24:24 浏览:336
安卓11如何隐藏图标 发布:2024-10-05 09:11:32 浏览:702
唐山壹编程 发布:2024-10-05 08:48:07 浏览:814
广东gps时钟服务器云主机 发布:2024-10-05 08:27:31 浏览:757