Sql 如何使用REF引用行对象?
我有两个实体,Customer和Order,我为它们创建了类型。SQL类型声明包括:Sql 如何使用REF引用行对象?,sql,oracle,oracle10g,ora-00932,Sql,Oracle,Oracle10g,Ora 00932,我有两个实体,Customer和Order,我为它们创建了类型。SQL类型声明包括: CREATE OR REPLACE TYPE "CUSTOMERTYPE" AS OBJECT ( customerId CHAR(6), name VARCHAR2(50), address VARCHAR2(255), telephone CHAR(11) ); CREATE OR REPLACE TYPE "ORDERTYPE" AS OBJECT ( customer REF CustomerTy
CREATE OR REPLACE TYPE "CUSTOMERTYPE" AS OBJECT (
customerId CHAR(6),
name VARCHAR2(50),
address VARCHAR2(255),
telephone CHAR(11)
);
CREATE OR REPLACE TYPE "ORDERTYPE" AS OBJECT (
customer REF CustomerType,
orderId CHAR(10),
orderDate DATE,
totalCost FLOAT
);
其想法是客户可以下1..*个订单。订单由1..1个客户下
我还创建了CustomerTable和OrderTable表,如下所示:
CREATE TABLE "CUSTOMERTABLE" OF "CUSTOMERTYPE";
CREATE TABLE "ORDERTABLE" OF "ORDERTYPE";
CustomerTable中有一个customerId为“123456”的条目。当我执行以下操作时:
INSERT INTO OrderTable
SELECT OrderType (REF(c), '1234567890', '02-Nov-2009', 99)
FROM CustomerTable c
WHERE c.customerId = '123456';
Oracle报告该行已插入。但是,当我检查数据时,我发现错误:
ORA-00932:不一致的数据类型:预期数量获得了REF MILKPLUSVELLOCET.CUSTOMERTYPE
非常感谢您的帮助。您所说的“当我检查数据时”是什么意思 这在我的机器上工作:
declare
cust customertype;
begin
cust := new customertype('111111', 'Mr. Burns', '42 Mil,ky Way', '+41 75 000');
insert into customertable values cust;
end;
/
INSERT INTO OrderTable
SELECT OrderType (REF(c), '1234567890', '02-Nov-2009', 99)
FROM CustomerTable c
WHERE c.customerId = '111111';
--
select * from ordertable;
select o.customer.name from ordertable o where o.orderid = '1234567890';