从表格类型的对象中选择

时间:2014-07-05 10:54:14

标签: sql oracle select plsql

我有以下类型

CREATE OR REPLACE TYPE "CLONE_PRODUCT_CHAR_RECORD" IS OBJECT  (
  CharacteristicID              NUMBER,
  NewValue              VARCHAR2(200 Char),
  NewValueName      VARCHAR2(200 Char)
);


 CREATE OR REPLACE TYPE "CLONE_PRODUCT_CHAR_TABLE" IS 
  TABLE OF CLONE_PRODUCT_CHAR_RECORD;

以及以下程序

DECLARE 

characteristic CLONE_PRODUCT_CHAR_TABLE:=CLONE_PRODUCT_CHAR_TABLE(

      CLONE_PRODUCT_CHAR_RECORD(2,'ZIKA','ZIKA'),
      CLONE_PRODUCT_CHAR_RECORD(3,'MIGO','MIGO'),
      CLONE_PRODUCT_CHAR_RECORD(4,'ZAG','ZAG')

);

char_record CLONE_PRODUCT_CHAR_RECORD;

BEGIN


END;

我需要从FeatureID = 3的特征记录中选择char_record变量

1 个答案:

答案 0 :(得分:0)

这将返回记录的副本,而不是同一记录

SELECT CLONE_PRODUCT_CHAR_RECORD(CharacteristicID, NewValue, NewValueName)
  INTO char_record
  FROM TABLE(characteristic)
 WHERE CharacteristicID = 3;

如果你想要记录本身,而不是副本,声明一个变量,row_num说,保存行的行号,使用查询来查找,然后使用此行号查找表中的记录:

SELECT rn
  INTO row_num
  FROM (SELECT CharacteristicID, ROWNUM AS rn
          FROM TABLE(characteristic))
 WHERE CharacteristicID = 3;

char_record := characteristic(row_num);