Oracle如何利用存储过程创建表等?
如表名为:test
请问,如何利用存储过程创建一个表?如何利用存储过程给一个表添加字段?如何创建视图?
并返回创建成功,或创建失败的信息。如:返回 1,表示成功,返回0表示失败。
问题点数:50、回复次数:10Top
1 楼sbaz(万神渡劫)回复于 2006-03-08 14:14:55 得分 30
create or replace function crtb
return number
is
begin
execute immediate 'create table testt(
id number(8),
name varchar2(10))';
return 1;
exception
when others then
return 0;
end;
/
要返回值好像还只能写成函数呢.你可以执行SELECT crtb FROM DUAL;来看返回的是什么值.
Top
2 楼sbaz(万神渡劫)回复于 2006-03-08 14:16:07 得分 0
VIEW的创建一般就是:
create view view_name as
select ......Top
3 楼sbaz(万神渡劫)回复于 2006-03-08 14:18:08 得分 0
在过程中给表加字段也是要用execute immediate 'alter table testt add .....';来实现Top
4 楼love_2008(love2008)回复于 2006-03-08 16:01:24 得分 10
用动态SQL
begin
execute immediate 'create table a(id number,name varchar2(10))';
end;
SQL> begin
2 execute immediate 'create table a(id number,name varchar2(10))';
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> desc a
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(10)
Top
5 楼zlz_212(ShREk)回复于 2006-03-08 16:44:34 得分 0
应该使用动态SQL
楼上的可以用
偶来晚了Top
6 楼letsflytogether(伍子)回复于 2006-03-08 17:01:00 得分 0
execute immediateTop
7 楼mosquitoxh((IT,中间件,架构)http://it.paiming.org/bbs)回复于 2006-03-08 17:58:23 得分 0
execute immediate
如果更动态的需要使用
dbms_sql包Top
8 楼zxjcool(cool)回复于 2006-03-08 18:27:22 得分 0
如果使用函数,如何执行这个函数?
用动态SQL ,是建立在存储过程上的吗?
Top
9 楼chliang315()回复于 2006-03-08 19:08:31 得分 0
在procedure中想用ddl,就必须用execute immediatTop
10 楼skying1(1年轻而流浪)回复于 2006-03-08 20:15:04 得分 10
create or replace procedure protest
as
exp exception;
begin
execute immediate 'create table test(id number,name varchar(20))';
execute immediate 'insert into test(110,'test_name')';
raise exp;
exception
when exp then
dbms_output.put_line('执行成功1');
when others then
dbms_output.put_line('执行失败0');
end;
Top




