IBM DB2 中的 OID 比较
OID comparison in IBM DB2
我是第一次尝试使用 DB2 的面向对象特性。我创建了类型,输入了 tables 并插入了数据。问题是我无法比较用户生成的 OID。
我的类型:
CREATE TYPE "orschema"."pojistovna_typ" AS(
nazev VARCHAR(30),
cislo VARCHAR(3))
INSTANTIABLE
REF USING INTEGER
MODE DB2SQL;
我输入的 table:
CREATE TABLE "orschema"."pojistovna" OF "orschema"."pojistovna_typ"
(REF IS oid USER GENERATED);
使用命令成功插入数据:
INSERT INTO "orschema"."pojistovna" (oid, nazev, cislo)
VALUES("orschema"."pojistovna_typ"(1), 'ccc', '105');
但是这个SELECT根本行不通,但是在IBM的知识里是不是用同样的方法来做的:
SELECT * FROM "orschema"."pojistovna" AS "p"
WHERE "p"."oid" = "orschema"."pojistovna_typ"(1);
错误:数据类型与“=”不兼容或不可比
一种方法是使用 CAST 函数,但我不确定这是否会减慢查询速度:
SELECT * FROM "orschema"."pojistovna" AS "p" WHERE CAST("p".oid AS INTEGER) = 1;
我是第一次尝试使用 DB2 的面向对象特性。我创建了类型,输入了 tables 并插入了数据。问题是我无法比较用户生成的 OID。
我的类型:
CREATE TYPE "orschema"."pojistovna_typ" AS(
nazev VARCHAR(30),
cislo VARCHAR(3))
INSTANTIABLE
REF USING INTEGER
MODE DB2SQL;
我输入的 table:
CREATE TABLE "orschema"."pojistovna" OF "orschema"."pojistovna_typ"
(REF IS oid USER GENERATED);
使用命令成功插入数据:
INSERT INTO "orschema"."pojistovna" (oid, nazev, cislo)
VALUES("orschema"."pojistovna_typ"(1), 'ccc', '105');
但是这个SELECT根本行不通,但是在IBM的知识里是不是用同样的方法来做的:
SELECT * FROM "orschema"."pojistovna" AS "p"
WHERE "p"."oid" = "orschema"."pojistovna_typ"(1);
错误:数据类型与“=”不兼容或不可比
一种方法是使用 CAST 函数,但我不确定这是否会减慢查询速度:
SELECT * FROM "orschema"."pojistovna" AS "p" WHERE CAST("p".oid AS INTEGER) = 1;