oracle中设置1位的整型问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中设置1位的整型问题相关的知识,希望对你有一定的参考价值。

oracle中定义有如下某表某字段:id number(1,0) ,肯定是1位数的整形,但是我在Java中 用hibernate自动生成实体类方法时,它就给我生成的是Boolean类型,请各位大虾帮帮忙,小弟在此非常感谢!

首先,id number(1),试一试,看看生成的字段声明还是不是 boolean 类型的。
其次,你对这个字段进行赋值操作试一试能不能成功,比如说赋值“3”,看能不能成功,如果成功说明没有影响,如果出错的话,说明此字段在创建的时候的确是有问题的。
最后,你尝试用id number(2,0) 试一下,是不是有这种情况。一般不会出现这种情况的,愿好运。追问

id number(1) 自动生成实体类的时候还是Boolean类型 ,但是在oracle中插入1位整形的数字没有问题 ; id number(2,0) 那就不会是Boolean 类型了

参考技术A oracle定义整形字段用number(1),这种number(1,0)感觉很别扭。
对于ORM映射的xml文件中,该字段的配置是不是非整形啊?对于ORM生成实体类本人只是理解个概念。呵呵追问

谢谢!

在Oracle中设置对象类型表的主键

【中文标题】在Oracle中设置对象类型表的主键【英文标题】:Setting the primary key of a object type table in Oracle 【发布时间】:2010-03-08 07:16:02 【问题描述】:

我有两个 Oracle 问题。

    当表由对象类型组成时,如何设置表的主键?例如

    CREATE TABLE object_names OF object_type

    我已经创建了一个 Varray 类型,

    CREATE TYPE MULTI_TAG AS VARRAY(10) OF VARCHAR(10);

    但是当我尝试这样做时

    从 pg_photos p 中选择 p.tags.count;

    “计数”部分出现无效标识符错误。 p.tags 是一个 MULTI_TAG,如何获取 MULTI_TAG 中的元素个数?

【问题讨论】:

欢迎来到 ***!正如您已经意识到的那样,您问了 两个 Oracle 问题。因此,请编辑此问题以删除一个问题,并将其作为一个单独的问题提出。 【参考方案1】:

首先,我不建议将数据存储在 Object 表中。对象是一个很好的编程工具,但查询对象表会导致复杂的 SQL。我建议将您的数据存储在标准关系模型中并在您的过程中使用对象。

现在回答你的问题:

    主键应该是不可变的,因此大多数时候 Object 类型不适合主键。您应该定义一个surrogate key 来引用您的对象。

    您必须将 varray 转换为表才能从 SQL 查询它

例如:

SQL> CREATE TYPE MULTI_TAG AS VARRAY(10) OF VARCHAR(10);
  2  /
Type created

SQL> CREATE TABLE pg_photos (ID number, tags multi_tag);
Table created

SQL> INSERT INTO pg_photos VALUES (1, multi_tag('a','b','c'));
1 row inserted

SQL> INSERT INTO pg_photos VALUES (2, multi_tag('e','f','g'));
1 row inserted

SQL> SELECT p.id, COUNT(*)
  2    FROM pg_photos p
  3         CROSS JOIN TABLE(p.tags)
  4   GROUP BY p.id;

        ID   COUNT(*)
---------- ----------
         1          3
         2          3

【讨论】:

我同意使用对象表确实很复杂,不幸的是我没有选择余地。作业要求我使用对象关系功能。感谢您的意见。我已经通过 vark.com 找到了答案,但我没有使用 CROSS JOIN,所以我需要研究一下它的作用。 @Rek: 交叉连接是 没有 连接条件的连接。在您的回答中,您加入了 pg_photosTABLE(p.tags) 没有 where 子句,这是一个交叉连接。【参考方案2】:

1) 主键是一个约束,要在对象表上添加约束,请查看此链接:http://download-west.oracle.com/docs/cd/B28359_01/appdev.111/b28371/adobjdes.htm#i452285

2) SQL 语句中不能使用 COUNT 方法: 参考评论中的链接

所以在我的情况下,我必须这样做

SELECT p.pid AS pid, count(*) AS num_tags FROM pg_photos p, TABLE(p.tags) t2 GROUP BY p.pid;

【讨论】:

#2 的链接是download.oracle.com/docs/cd/B14117_01/appdev.101/b10807/…

以上是关于oracle中设置1位的整型问题的主要内容,如果未能解决你的问题,请参考以下文章

php中设置一个常量的日期值格式。 这样可以使用data()函数预期做比较,得到一个布尔值。。

固定二进制位的整型变量

oracle数据库中的整型是啥

java基础:补充

java基础:补充

获取 BitSet 中设置位的所有索引