`

数据字典中long字段操作

 
阅读更多

在数据字典中保留很多long字段,查询时很不方便。

以下包可以转换为varchar2方便操作,查询数据字典时可以用varchar进行查询

create or replace package long_help
authid current_user
as
    function substr_of
    ( p_query in varchar2,
      p_from  in number,
      p_for   in number,
      p_name1 in varchar2 default NULL,
      p_bind1 in varchar2 default NULL,
      p_name2 in varchar2 default NULL,
      p_bind2 in varchar2 default NULL,
      p_name3 in varchar2 default NULL,
      p_bind3 in varchar2 default NULL,
      p_name4 in varchar2 default NULL,
      p_bind4 in varchar2 default NULL )
    return varchar2;
end;
/
create or replace package body long_help
as

    g_cursor number := dbms_sql.open_cursor;
    g_query  varchar2(32765);

procedure bind_variable( p_name in varchar2, p_value in varchar2 )
is
begin
    if ( p_name is not null )
    then
        dbms_sql.bind_variable( g_cursor, p_name, p_value );
    end if;
end;


function substr_of
( p_query in varchar2,
  p_from  in number,
  p_for   in number,
  p_name1 in varchar2 default NULL,
  p_bind1 in varchar2 default NULL,
  p_name2 in varchar2 default NULL,
  p_bind2 in varchar2 default NULL,
  p_name3 in varchar2 default NULL,
  p_bind3 in varchar2 default NULL,
  p_name4 in varchar2 default NULL,
  p_bind4 in varchar2 default NULL )
return varchar2
as
    l_buffer       varchar2(4000);
    l_buffer_len   number;
begin
    if ( nvl(p_from,0) <= 0 )
    then
        raise_application_error
        (-20002, 'From must be >= 1 (positive numbers)' );
    end if;
    if ( nvl(p_for,0) not between 1 and 4000 )
    then
        raise_application_error
        (-20003, 'For must be between 1 and 4000' );
    end if;

    if ( p_query <> g_query or g_query is NULL )
    then
        if ( upper(trim(nvl(p_query,'x'))) not like 'SELECT%')
        then
            raise_application_error
            (-20001, 'This must be a select only' );
        end if;
        dbms_sql.parse( g_cursor, p_query, dbms_sql.native );
        g_query := p_query;
    end if;
    bind_variable( p_name1, p_bind1 );
    bind_variable( p_name2, p_bind2 );
    bind_variable( p_name3, p_bind3 );
    bind_variable( p_name4, p_bind4 );

    dbms_sql.define_column_long(g_cursor, 1);
    if (dbms_sql.execute_and_fetch(g_cursor)>0)
    then
        dbms_sql.column_value_long
        (g_cursor, 1, p_for, p_from-1,
         l_buffer, l_buffer_len );
    end if;
    return l_buffer;
end substr_of;

end;
/

分享到:
评论

相关推荐

    superset二次开发数据字典

    理解这些字段的含义,有助于开发者在二次开发中进行正确的数据操作。 以`annotations`表为例,该表用于记录与数据可视化相关的注释,其中`created_on`和`changed_on`字段表明了记录创建和修改的时间。`id`字段作为...

    ORACLE中数据字典的使用方法

    ### ORACLE中数据字典的使用方法 #### 数据字典概述 数据字典(Data Dictionary)在Oracle数据库中扮演着非常关键的角色。它是一个存储数据库和应用程序元数据的目录,这些元数据包括了数据库对象(如表、视图、...

    ORACLE用户常用数据字典的查询使用方法

    在Oracle数据库中,数据字典是非常重要的组成部分,它存储了关于数据库自身的重要元数据信息,包括表、视图、索引等对象的信息及其属性。数据字典可以帮助数据库管理员及开发人员更好地理解和管理数据库结构。本文将...

    Oracle常用数据字典表及动态视图

    在Oracle数据库管理中,理解并掌握数据字典表和动态性能视图是非常重要的。它们提供了关于数据库结构、配置和运行时状态的关键信息。本文将详细介绍Oracle中的一些常用数据字典表及其相关的SQL查询语句。 #### 一、...

    在ARCGIS属性表中增加需要的字段,并自动赋值

    有时,我们需要在属性表中添加新的字段,并且根据现有数据自动为其赋值。本篇将详细讲解如何在ArcGIS中实现这个过程,特别是通过VBA(Visual Basic for Applications)脚本来实现自动化操作。 首先,我们从基础步骤...

    计算机等考三级数据库知识辅导:用户如何有效地利用数据字典.docx

    在计算机领域,数据库是存储和管理信息的核心工具,而在数据库管理中,数据字典起着至关重要的作用。本文主要探讨了如何在Oracle数据库系统中,用户可以有效地利用数据字典来获取和理解数据库的相关信息。 Oracle的...

    ORACLE用户常用数据字典的查询方法

    在Oracle数据库管理与开发中,了解如何有效查询数据字典是非常重要的技能之一。数据字典是数据库管理系统(DBMS)中用来存储有关数据库本身信息的一系列特殊表和视图。通过查询这些数据字典视图,可以获取关于数据库...

    致远OA-A8V5数据字典

    根据给定的信息,我们可以深入分析并提取出与...以上是对致远OA-A8V5数据字典中几个关键表格及其字段的详细解释。通过这些表格的设计,我们可以看出致远OA系统在用户管理、权限控制以及应用集成等方面的功能设计思路。

    nc65前后台数据库操作的用法

    在nc65系统中,后台数据库操作主要通过`BaseDAO`类实现,这是一系列私有端(private端)的数据访问操作。下面详细介绍该类中的各种数据库操作方法。 ##### 1. 查询方法 在后台数据库操作中,`BaseDAO`提供了多种...

    ECSHOP-v3.6--3.0-完整版数据字典-数据库结构.docx

    ECSHOP-v3.6--3.0-完整版数据字典-数据库结构 本文档总结了ECSHOP v3.0...通过对ECSHOP v3.0数据库字典的分析,我们可以了解到商品分类表和商品数据表的结构和字段信息,从而更好地理解和应用ECSHOP v3.0数据库。

    Oracle 元数据表

    数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 数据字典的主要功能是存储数据库的元数据,即数据库的结构信息和 statistcs 信息。元数据表的内容包括用户...

    oracle数据库修复

    支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB...

    redis底层数据模型与数据结构

    Redis 中存储数据的基本单元是 `redisObject` 结构,它定义了 Redis 对象的各种属性,包括类型、编码方式、LRU/LFU 计算等。 **1.1 `unsigned type:4;` 和 `unsigned encoding:4;`** - **`type`**: 用于表示对象的...

    Oracle数据库恢复工具Oracle Database Unloader(ODU)3.09

    ODU全称为Oracle Database Unloader,是类似于Oracle的DUL的软件,用于直接从Oracle数据库的数据文件中获取表数据。在各种原因造成的数据库不能打开时,用于抢救数据,最大限度地减少数据丢失。 ODU有什么功能特点...

    arcgis小班自动编号

    - 检查字典中是否已存在指定字段名的条目。 - 如果存在,则获取该字段的当前最大值并加一,然后更新字典中的值。 - 如果不存在,则将该字段的初始值设置为1,并将其添加到字典中。 #### 3. 序列号格式化 ```vba a...

    PLSQL培训文档.ppt

    PLSQL 中有多种数据类型,包括 Date、Boolean、Rowid、Char、Varchar2、Long、Long raw、BLOB、Number 等。Number 类型可以指定精度和刻度范围,例如 NUMBER(P,S),其中 P 是精度,S 是刻度范围。 4. 使用 %TYPE 和...

    【精品文档】在组态王中使用KVADODBGrid控件时如何对数据库中的日期类型字段进行查询.doc

    其中,ADate为数据库中字段的名称,日期型,开始时间和结束时间是组态王数据字典中定义字符串变量。 此外,在组态王中使用KVADODBGRID控件进行数据库查询时,能否对查询出来的数据进行修改,同时将数据更新到数据库...

    Oracle_plsql讲义:第9章 创建和管理表.ppt

    Oracle PL/SQL是一种强大的数据库编程语言,用于在Oracle数据库中执行复杂的事务处理、数据操作和数据库管理任务。在第9章“创建和管理表”中,我们深入探讨了如何使用Oracle SQL来创建、修改和管理数据库对象,特别...

Global site tag (gtag.js) - Google Analytics