当前位置:  数据库>oracle

Oracle 用过程获得表的字段

    来源: 互联网  发布时间:2017-04-03

    本文导语: //在存储过程里面,我们常常将从一个表里面查询到的字段数据复制给一写变量,   //然后调用包里面的函数dbms_output.put_line()来将其打印出来;   //下面是一个实例:   procedure show_employee(empno_in in emp.empno%type)     as       ...

//在存储过程里面,我们常常将从一个表里面查询到的字段数据复制给一写变量,  
//然后调用包里面的函数dbms_output.put_line()来将其打印出来;  
//下面是一个实例:  
procedure show_employee(empno_in in emp.empno%type)    
as    
  v_sign number;    
  v_empno emp.empno%type;    
  v_ename emp.ename%type;    
  v_deptno emp.deptno%type;    
begin  
     select 1 into v_sign    
     from dual    
     where exists(select count(*) from emp where empno=empno_in);    
     if v_sign=1 then    
        select empno,ename,deptno into v_empno,v_ename,v_deptno    
        from emp where empno=empno_in;    
        dbms_output.put_line('information of'||empno_in||' are:');    
        dbms_output.put_line('empno:'||v_empno||',ename:'||v_ename||',deptno:'||v_deptno);    
     end if;    
     exception    
     when others then    
          dbms_output.put_line('no data found');    
end show_employee;  
SQL> exec show_employee('7900');  
information of7900 are:  
empno:7900,ename:JAMES,deptno:30  
//  
//但是我们怎么样将一个表的结构用存储过程倒出来呢?  
//就是写一个过程,参数是传进去表的名字,然后打印出表的所有字段;  
create or replace procedure pro_display_col(table_name_in varchar2)  
as 
  type arry_type is table of varchar2(30) index by pls_integer;  
  v_cols arry_type;  
begin  
     select tc.column_name bulk collect  
            into v_cols  
     from user_tab_columns tc  
     where tc.table_name=upper(table_name_in);  
       
     for i in 1..v_cols.count  
     loop  
         dbms_output.put_line(v_cols(i));  
     end loop;  
       
     exception  
     when others then  
          dbms_output.put_line(sqlerrm);  
end pro_display_col;  
/  
//解析:  
//此处定义了一个嵌套表数据类型,通俗意义上叫做数组,没有最大限制,  
//并定义了一个接收返回值的字符串类型,30个字节,接受15个字符  
//我们也可以将其定义为接受30个字符的嵌套表:  
//type array_type is a table of varchar2(30 char) index by pls_integer;  
//index by pls_integer是为了获得column_name数据时,不需要用v_cols.extend  
//来为获取的数据显示开辟空间,如果没有index by pls_integer,  
//那么我们每次获取数据时都要为其显示的开辟空间,v_cols.extend;  
//关于bulk collect  
//采用bulk collect可以将查询结果一次性地加载到collections中。  
//而不是通过cursor一条一条地处理。  
SQL> exec pro_display_col('emp');  
EMPNO  
ENAME  
JOB  
MGR  
HIREDATE  
SAL  
COMM  
DEPTNO  
//  
SQL> exec pro_display_col('dept');  
DEPTNO  
DNAME  
LOC  
//  
//其实最简单的获取表字段的方法:  
SQL> col data_type format a13;  
SQL> select column_name,data_type,data_length,data_precision,data_scale  
  2  from user_tab_columns  
  3  where table_name=upper('emp');  
COLUMN_NAME                    DATA_TYPE     DATA_LENGTH DATA_PRECISION DATA_SCALE  
------------------------------ ------------- ----------- -------------- ----------  
EMPNO                          NUMBER                 22              4          0  
ENAME                          VARCHAR2               10                  
JOB                            VARCHAR2                9                  
MGR                            NUMBER                 22              4          0  
HIREDATE                       DATE                    7                  
SAL                            NUMBER                 22              7          2  
COMM                           NUMBER                 22              7          2  
DEPTNO                         NUMBER                 22              2          0  
// 


























































































    
 
 

您可能感兴趣的文章:

  • ORACLE数据库常用字段数据类型介绍
  • oracle 实际值超过数据库某个字段指定长度报错解决
  • Oracle用什么语句查询字段?
  • 关于Oracle BLOB类型,一个String字符怎么写入BLOB字段?
  • 与Oracle连接时,怎样添加Bolb,Clob字段?急!!!!!
  • oracle删除表字段和oracle表增加字段
  • 请问保存文章内容的字段应用什么类型的(oracle),急!!!
  • 请问jboss+oracle文件怎样配置,数据库中文字段不为乱码
  • ****请教关于oracle中date型字段的显示问题。谢谢!!!**
  • Oracle 中文字段进行排序的sql语句
  • oracle中怎么没有boolean类型的字段?应该用什么代替?
  • 怎样将当前时间写到Oracle中date类型的字段中!!!!!!!!!!!!
  • 如何向oracle库中字段类型是date的添加数据
  • Oracle中大字段问题,数据大了就写不进去了。
  • Oracle 自增(auto increment) 或 标识字段的建立方法
  • ****请教关于oracle中date型字段的显示问题。谢谢!!!** iis7站长之家
  • 在oracle数据库里创建自增ID字段的步骤
  • oracle关键字作为字段名使用方法
  • Oracle 查询表信息获取表字段及字段注释
  • jsp如何选择更新oracle的date字段
  • Oracle 实现类似SQL Server中自增字段的一个办法
  • Oracle 获得以百分号结尾的脚本有三种写法
  • Oracle认证基本介绍:获得OCP认证的好处
  • Java 获得Oracle 的错误代码
  • 如何从Oracle技术支持获得更多
  • 在Oracle 10g中如何获得索引的专家建议
  • oracle中如何获得数据库的DBID信息
  • Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle分页存储过程 oracle存储过程实例
  • shell调用oracle储存过程,怎么判断储存过程执行结果是否正确
  • Oracle存储过程调试简述
  • Oracle事务!使用游标提交过程
  • oracle sql执行过程(流程图)
  • oracle的存储过程实例讲解
  • Oracle存储过程如何返回一个结果集&如何获取
  • oracle 10g在红旗桌面版6.2的安装过程
  • redhat 9 下安装 oracle9i 过程中,要求指定java目录,到底是哪一个目录?
  • Oracle建表过程初学
  • 关于SHELL调用oracle存储过程出现的一个小问题
  • oracle数据库中查看系统存储过程的方法
  • Oracle利用存储过程造数据
  • 求教:shell 脚本怎么获取ORACLE存储过程的返回值?
  • Oracle Enterprise Linux安装过程
  • Oracle创建用户权限的过程
  • Linux主机下配置Oracle 10G自动启动过程记
  • java调oracle过程的出了问题,求助!帮忙看看
  • 急!!!linux9下安装oracle9i在configuration Tool过程出现错误,在线等待,解决立即给分!
  • UNIX服务器上使用“kill"命令终止"Oracle”过程
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3