CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

Oracle如何利用存储过程创建表等?

楼主zxjcool(cool)2006-03-08 14:05:11 在 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

相关问题

  • oracle在存储过程中,如何删除和创建表?
  • oracle创建存储过程出错???
  • Oracle中如何在存储过程中创建和删除表索引?
  • 如何用存储过程创建表
  • 请问在ORACLE中如何列出所有用户创建的表存储过程等?
  • 在oracle存储过程中如何创建数组?
  • 在pb在可不可以创建oracle的存储过程
  • 能否利用存储过程给表创建Trigger??
  • 在存储过程中能不能创建表格?
  • 用存储过程创建数据表的问题!

关键词

  • 存储过程
  • 函数
  • 执行
  • dbms
  • view
  • sql
  • immediate
  • 表
  • 利用存储过程
  • 创建

得分解答快速导航

  • 帖主:zxjcool
  • sbaz
  • love_2008
  • skying1

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo