`
xierui
  • 浏览: 7303 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

查看当前用户所有表信息存储过程(输出)

阅读更多
下午没事写了个简单的存储过程,功能:查看当前用户所有表信息存储过程(输出在控制台)
刚开始考虑使用 execute immediate str_sql; 后考虑到与需求不符,放弃
用到了 动态游标,record, 代码很粗拙,请大家多指点!

create or replace procedure print_tablesinfo3
as
  str_sql varchar2(500);
  -- 创建一个数据行类型
  type rowdata is record (col_name   VARCHAR2(30),
                            col_type   VARCHAR2(106),
                            isnull   VARCHAR2(1),
                            col_desc VARCHAR2(4000)
                            );
   myrow rowdata;
   tab_name varchar2(50);--表名
   TYPE TCUR IS REF CURSOR; -- 动态游标声明
   CUR TCUR;--列信息游标
   TAB_CUR TCUR;--表信息游标
   v_user varchar2(50);-- 用户名
begin
 select user into v_user from dual;--查询当前用户名
 dbms_output.put_line('当前用户名: '||v_user);
-- 查询用户的所有表
  str_sql :=  'select object_name from user_objects  where object_type=' || q'!'TABLE'!';
  --dbms_output.put_line(str_sql);
  open TAB_CUR FOR str_sql;
  loop
  fetch TAB_CUR into tab_name;
        exit when TAB_CUR%notfound;
        dbms_output.put_line('');
         dbms_output.put_line('表名:'||tab_name);
         str_sql :=  'select  t.COLUMN_NAME,t.DATA_TYPE,t.NULLABLE, col.COMMENTS  from user_tab_columns t,user_col_comments col
          where col.table_name = t.table_name and  
t.COLUMN_NAME = col.COLUMN_NAME and t.TABLE_NAME = '||q'! '!' || tab_name || q'!' !' ;
          --dbms_output.put_line(str_sql); -- 调试时用
          dbms_output.put_line('列名   '||'   类型   '||'   是否为空   '||'   描述   ');
          dbms_output.put_line('=================================');
          open CUR FOR str_sql;
          loop
          fetch cur into myrow;
            exit when cur%notfound;
            dbms_output.put_line(myrow.col_name || '  ' || myrow.col_type || '  ' || myrow.isnull || '   '||myrow.col_desc );
          end loop;
          close cur;
          --dbms_output.put_line('=================================');
        end loop;
   close TAB_CUR;
end;
分享到:
评论

相关推荐

    Oracle存储过程中使用临时表

    本篇文章将深入探讨如何在Oracle存储过程中使用临时表,包括会话级临时表和事务级临时表。 ### 会话级临时表 会话级临时表(Session-Level Temporary Tables)只在创建它的会话内可见,并且在会话结束时自动删除。...

    存储过程(修改用户信息是否已存在用户名)

    ### 存储过程知识点解析 #### 一、存储过程简介 在数据库系统中,存储过程是一种预先编译好的SQL程序,它可以实现复杂的数据处理逻辑,并且可以被多次调用而无需重新编译,从而提高执行效率。存储过程不仅可以包含...

    sql多表分页存储过程

    ### SQL多表分页存储过程解析 #### 标题与描述概述 该存储过程主要针对SQL Server 2005/2000环境下的多表分页查询进行了实现,并且已在SQL环境下测试通过。其核心功能是为用户提供一种灵活且高效的多表分页查询...

    SQL Server用户注册存储过程

    - 然后,将新用户的信息插入到`tableName`表中。注意,插入的字段包括`userID`、`loginID`、`password`、`userName`、`linkNum`、`address`、`email`、`createTime`和`status`,但在这个示例中,`userName`、`...

    存储过程.pdf

    8. **sp_stored_procedures**:列出当前环境中的所有存储过程。 - 示例:`EXEC sp_stored_procedures` #### 六、用户自定义存储过程示例 假设我们需要创建一个存储过程来获取客户信息: ```sql CREATE PROCEDURE...

    存储过程学习文档

    - **Owner**:拥有存储过程的用户ID的名称,应为当前用户的名称或当前用户所属的角色的名称。 - **Procedure_name**:新存储过程的名称,必须满足标识符规则,且对于数据库及其所有者必须是唯一的。 - **;number**:...

    SQLServer储存过程-130808

    3. **增强安全性**:通过限制用户对底层数据表的直接访问权限,仅通过特定的存储过程进行数据操作,增强了数据安全性。存储过程定义可以加密,防止非法查看。 4. **减少网络流量**:复杂操作可以通过单条执行存储...

    SQL存储过程

    用户存储过程可以完成以下功能:接受输入参数并返回多个输出值、包含若干T-SQL语句,用以完成特定的SQL Server操作,其中可以有对其他存储过程的调用、返回一个指示成功与否及失败原因的状态代码给调用它的过程。...

    SQLserver存储过程与触发器.pdf

    使用向导创建存储过程需要选择当前服务器,然后执行“工具→向导”菜单命令,选择“创建存储过程向导”项,然后设置存储过程的名称和要执行的操作。 执行存储过程 执行存储过程可以使用 EXECUTE 语句或 sp_execute...

    通用分页存储过程(支持多表)

    知识点:通用分页存储过程(支持多表) 一、存储过程概述 在数据库管理系统中,存储过程是一种预先编译并存储在数据库中的SQL程序。它能够接收参数,执行一系列操作,如查询、更新数据,并返回结果。存储过程提高...

    Informix存储过程笔记

    - `SYSPROCEDURES`、`SYSPROCBODY`、`SYSPROCPLAN`和`SYSPROCAUTH`系统表用于管理和查看存储过程的元数据,包括其代码、执行计划和权限信息。 使用`dbschema`工具可以查看和导出存储过程的源代码。例如,`dbschema ...

    SQL存储过程文档(无毒,无害)

    此存储过程用于向`book`表中添加新记录,并通过输出参数返回当前表中所有图书的总价。 ##### 实例3:创建临时销售报表 ```sql CREATE PROCEDURE temp_sale AS SELECT a.编号, a.名称, b.数量, b.单价, a.单价 * b....

    列变成行存储过程将列变成行的存储过程

    1. 存储过程接受五个输入参数:@tablename(表名)、@fieldname(字段名,默认为'*'表示所有字段)、@pagesize(每页记录数)、@currentpage(当前页数)、@orderid(主键排序字段),以及两个输出参数:@rowcount...

    实验十 存储过程与触发器

    2. 创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。 3. 存储过程是数据库对象,其名称必须遵守标识符规则。 4. 只能在当前数据库中创建存储过程。 创建存储过程时,需要指定输入参数、...

    存储过程实现备份

    - 存储过程会输出所输入路径是否存在这一信息。 ### 标签解读:“SQL 备份 存储过程” 这些标签进一步明确了文章的主题,即通过SQL Server的存储过程实现数据库的备份功能。 ### 部分内容解读: 这部分内容提供...

    SQLSERVER存储过程例子

    存储过程是一组为了完成特定功能的SQL语句,这些语句被组合在一起并保存在数据库中,用户可以通过调用存储过程的名字来执行这些语句。它们可以有输入参数、输出参数甚至是输入输出参数,使得在不同的场景下灵活地...

    MySQL存储过程基础教程.pdf

    存储过程的元数据包括其定义、参数信息、执行情况等,可以通过系统表或函数查询这些信息。 #### 14. 详细信息 存储过程可以包含非常复杂的逻辑,包括变量声明、条件判断、循环控制等。 #### 15. 编写长例程的技巧 ...

    整理文档(1)-存储过程.doc

    2. **执行效率高**:存储过程在首次执行时会被编译和优化,其执行计划存储在系统表中。再次调用时无需重新编译,直接使用存储的执行计划,从而加快了执行速度。 3. **减少网络流量**:调用存储过程仅需发送一次调用...

Global site tag (gtag.js) - Google Analytics