Oracle 如何将数据类型映射到 CODE/ID - Dump 和 dbms_sql.define_column 生成数据类型代码

2023-12-28

使用时DUMP()或使用时dbms_sql.define_column两者都返回 Oracle 数据类型的 CODE。

是否有一个 MAP 将 Oracle 数据类型与其由 DUMP() 函数或 dbms_sql.define_column 功能返回的 Oracle 代码联系起来?

我正在寻找它来帮助测试以及查找自定义数据类型,例如嵌套表。我的一个表中存在嵌套表,并生成数据类型代码 109。如何查找与类型代码 109 关联的类型?下面是转储和 dbms_sql.define_column 的示例。

我必须假设这在数据库中可以进行查询,因为当我编写查询时,我使用列类型的“文本”名称而不是代码来定义列。那么,无论数据类型是“内置”还是“自定义”,文本(又名数据类型名称)存储在哪里?它一定在某个地方。

DUMP

SELECT 
    DUMP(to_date('15-JAN-18'),10,1,1) AS date_type
  , DUMP(123,10,1,1)   AS num_type
  , DUMP('abc',10,1,1) AS var_type
FROM dual
;

转储输出

/* OUTPUT: 
 |
 | "DATE_TYPE"          "NUM_TYPE"          "VAR_TYPE"
 |--------------------|-------------------|------------------
 | "Typ=13 Len=8: 226"  "Typ=2 Len=3: 194"  "Typ=96 Len=3: 97"
*/

DBMS_SQL.DEFINE_COLUMN

... some code above ...

-- Define columns:
FOR i IN 1..n_colcnt
LOOP
    dbms_output.put_line(v_desctab(i).col_name ||': ' || v_desctab(i).col_type);

    IF v_desctab(i).col_type = 2
    THEN dbms_sql.DEFINE_COLUMN(n_curid, i, v_num_var);
    ELSIF v_desctab(i).col_type = 12 THEN
        dbms_sql.define_column(n_curid, i, v_date_var);
    ELSE
        dbms_sql.define_column(n_curid, i, v_name_var, 50);
    END IF;
END LOOP;

... some code below ...

DBMS_SQL.DEFINE_COLUMN 输出 - 输出列名称及其数据类型代码。我想要文本。

QUERY_ID: 2
OTHER_ID: 2
ACTIVE: 1
QUERY_NAME: 1
QUERY_DESC: 1
QUERY_DEF: 112
QUERY_TYPE: 2
CREATED: 12
UPDATED: 12
CREATED_BY: 2
UPDATED_BY: 2

关于 Oracle 数据类型与其相应 ID 的映射,我所掌握的一件事是我继续引用的 Excel 文件。我希望我可以在 Oracle 中查询一些东西来给我我正在寻找的东西,而不是引用外部文档。

THIS https://docs.oracle.com/cd/E11882_01/server.112/e41085/sqlqr06002.htm#SQLQR959链接,但是当我寻找自定义类型并且缺少 CODE 13 的文档时,这对我没有帮助。

这是有人整理的另一个非常好的数据类型映射:Oracle 类型代码映射 https://ellebaek.wordpress.com/2011/02/25/oracle-type-code-mappings/


类型解释如下:Oracle 内置数据类型 https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Data-Types.html#GUID-DF7E10FC-A461-4325-A295-3FD4D150809E.

我认为 13 型是如何DATEs当它们不属于表的一部分时进行表示。这是因为您正在使用to_date函数,因此它仅作为内存中结构存在,我认为可能因架构而异。相反,表中的值通常以独立于平台的方式存储(无论如何,我很确定对于数字类型来说这是正确的)。参考 https://oraclesniplets.tumblr.com/post/1179958393/my-oracle-support-oracle-database-690281.

create table t1 ( c1 date );
insert into t1 values ( sysdate );
commit;

SELECT 
    DUMP(sysdate,10) AS date_type
  , dump(c1, 10) as date_table_type
FROM t1;

Typ=13 Len=8: 227,7,5,30,18,22,0,0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
Typ=12 Len=7: 120,119,5,30,19,23,1   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 如何将数据类型映射到 CODE/ID - Dump 和 dbms_sql.define_column 生成数据类型代码 的相关文章

  • 如何在oracle sql查询中提取括号之间的字符串

    我正在尝试从字符串中提取括号之间的值 我怎样才能做到这一点 例如 我有这个字符串 Gupta Abha 01792 我想得到括号之间的结果 即 01792 我正在尝试编写这样的查询 select substr Gupta Abha 0179
  • java.sql.SQLException: - ORA-01000: 超出最大打开游标数

    我收到 ORA 01000 SQL 异常 所以我有一些与之相关的疑问 最大打开游标是否与 JDBC 连接数完全相关 或者它们也与我们为单个连接创建的语句和结果集对象相关吗 我们正在使用连接池 有没有办法配置数据库中语句 结果集对象的数量 如
  • 想要在Sql中获取两列的差异

    我想获取表的列的差异 我们的列名称为 Planned date 所以现在我想获取这两列的差异 A Planned Date of stop1 Planned Date of stop5 那么我如何编写查询来获取 A 的值 下面是我编写的示例
  • where 子句中忽略空白字符

    我做了以下事情 create table test col char 10 insert into test values hello select from test where col hello 有人建议我上面的内容不应返回任何结果
  • 我怎样才能等到所有调度程序作业完成?

    我是我的包裹 我正在排队多个作业 如下所示 dbms scheduler create job job name gt p job name job type gt PLSQL BLOCK job action gt p sql code
  • 表与视图的性能

    最近开始使用一个数据库 其中的惯例是为每个表创建一个视图 如果您假设表和视图之间存在一对一的映射 我想知道是否有人可以告诉我这样做对性能的影响 顺便说一句 这是在 Oracle 上的 假设问题是关于非物化视图 实际上取决于视图所基于的查询以
  • 在 MVC3 应用程序中使用具有表单身份验证的 Oracle 数据库

    我编写了一个简单的 MVC3 应用程序 并遵循了有关如何设置经过身份验证的用户的教程 本教程使用 SQL Server Express 数据库 是否可以使用 Oracle 数据库代替 SQL Server 这只是更改 web config
  • 如何查看授予其他用户的架构哪些权限

    考虑这种情况 在数据库中 我有两个用户 A 和 B 及其相应的架构 我想知道 如何获取信息 架构 B 中的用户 A 有哪些权限 考虑这种情况 我们有两个用户及其关联的场景 我们有用户A和用户B 在A中 假设我们有TB1 TB2 在B中 假设
  • Oracle SQL 触发器上的变异表

    我正在尝试执行触发器 但出现变异表错误 SQL 代码是这样的 CREATE OR REPLACE TRIGGER CHK Apartado D BEFORE INSERT OR UPDATE ON CONTRACTS FOR EACH RO
  • WHERE IN 条件不接受字符串值

    我正在动态构造一个带有名称的字符串用户数据在 PL Sql 过程中通过附加用户名 单引号 和逗号 的形式 abc123 xyz456 pqr789 但是当我将此字符串传递给 SELECT 语句的 WHERE IN 条件时 SELECT FR
  • 当网站停止时,Oracle 数据提供程序会固定 IIS 工作进程

    我们在 Oracle 11g 第 2 版中遇到了一个严重的问题 其中 w3wp 进程接管了整个处理器核心 并且调试显示 Oracle 数据提供程序无限地抛出 ThreadAbortException 开发人员通过执行以下操作发现了此问题 1
  • 休眠可能会导致此“获取顺序错误”错误吗?

    我尝试使用 Hibernate Spring JPA 执行此查询 在 Oracle DB 中 Query value DELETE from MY TABLE where ID ID nativeQuery true void delete
  • 无法在 .NET 中加载 Oracle.DataAccess 的文件或程序集

    当我尝试运行一个简单的程序来访问 oracle 时 我收到此消息 无法加载文件或程序集 Oracle DataAccess 版本 2 111 7 20 文化 中性 PublicKeyToken 89b483f429c47342 或其依赖项之
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • 数百个别名/同义词与数据库表的完全限定名称

    考虑到多个模式中的数百个数据库表 在创建存储过程和视图时 您是否建议使用别名 同义词或完全限定名称 给定一些 schema table 像这样 Orders OrderHeader Production LineThroughput Sal
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • Pivotal Cloud Foundry - 连接到外部 Oracle 数据库

    我正在创建一个 Spring boot 应用程序 该应用程序连接到一个不由 PCF 管理 或驻留在外部 的 Oracle 数据库 在我的本地开发环境中 我在 application properties 文件中配置了数据库连接详细信息 有人
  • 通过 Oracle 的数据库链接运行 SQL Server 存储过程

    参考如何通过数据库链接执行 Oracle 存储过程 https stackoverflow com questions 240788 how to execute an oracle stored procedure via a datab

随机推荐