258 UTL_COLL

UTL_COLLパッケージによって、問合せや更新を行うためのコレクション・ロケータをPL/SQLプログラムで使用できます。

この章のトピックは、次のとおりです:

258.1 UTL_COLLサブプログラムの要約

UTL_COLLパッケージには、1つのプログラム、IS_LOCATORファンクションがあります。

表258-1 UTL_COLLパッケージのサブプログラム

サブプログラム 説明

IS_LOCATORファンクション

コレクション項目が実際にロケータかどうかを判別します。

258.1.1 IS_LOCATORファンクション

このファンクションは、コレクション項目が実際にロケータかどうかを判別します。

構文

UTL_COLL.IS_LOCATOR (
   coln IN STANDARD) 
  RETURNS BOOLEAN;

プラグマ

WNDSWNPSおよびRNPSの各プラグマの断言。

パラメータ

表258-2IS_LOCATORファンクションのパラメータ

パラメータ 説明

coln

ネストした表またはVARRAY項目

戻り値

表258-3 IS_LOCATORファンクションの戻り値

戻り値 説明

1

コレクション項目はロケータです。

0

コレクション項目はロケータではありません。

CREATE OR REPLACE TYPE list_t as TABLE OF VARCHAR2(20); 
/ 
 
CREATE OR REPLACE TYPE phone_book_t AS OBJECT ( 
  pno  number, 
  ph   list_t ); 
/ 
 
CREATE TABLE phone_book OF phone_book_t 
      NESTED TABLE ph STORE AS nt_ph; 
CREATE TABLE phone_book1 OF phone_book_t 
      NESTED TABLE ph STORE AS nt_ph_1 RETURN LOCATOR; 
 
INSERT INTO phone_book VALUES(1, list_t('650-633-5707','650-323-0953')); 
INSERT INTO phone_book1 VALUES(1, list_t('415-555-1212')); 
 
CREATE OR REPLACE PROCEDURE chk_coll IS 
  plist list_t; 
  plist1 list_t; 
BEGIN 
  SELECT ph INTO plist FROM phone_book WHERE pno=1; 
 
  SELECT ph INTO plist1 FROM phone_book1 WHERE pno=1; 
 
  IF (UTL_COLL.IS_LOCATOR(plist)) THEN 
    DBMS_OUTPUT.PUT_LINE('plist is a locator'); 
  ELSE 
    DBMS_OUTPUT.PUT_LINE('plist is not a locator'); 
  END IF; 
 
  IF (UTL_COLL.IS_LOCATOR(plist1)) THEN 
    DBMS_OUTPUT.PUT_LINE('plist1 is a locator'); 
  ELSE 
    DBMS_OUTPUT.PUT_LINE('plist1 is not a locator'); 
  END IF; 
 
END chk_coll; 
 
SET SERVEROUTPUT ON 
EXECUTE chk_coll;