Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Update an Object Type Column

Re: Update an Object Type Column

From: Arun Mathur <themathurs_at_gmail.com>
Date: Fri, 21 Dec 2007 07:48:05 -0800 (PST)
Message-ID: <fb62ee0e-0780-4f4c-b136-9a6c9f2af2e0@e4g2000hsg.googlegroups.com>


On Dec 21, 9:33 am, "jimmy.brock" <jimmybr..._at_gmail.com> wrote:
> I know how to update all values in an object type column, but how do
> you update only certain values?
> I can't create a nested table or any other object because this
> database belongs to a vendor.
>
> Here is what I have:
>
> CREATE OR REPLACE TYPE ACKHEADER_TY
>      AS OBJECT(
>   MESSAGETYPE                   VARCHAR2(16)
> , MESSAGENUMB                   VARCHAR2(100)
> , MESSAGESENDERIDENTIFIER       VARCHAR2(60)
> , MESSAGERECEIVERIDENTIFIER     VARCHAR2(60)
> , MESSAGEDATE                   DATE
> , TRANSMISSIONACKCODE           VARCHAR2(2)
>              )
> /
>
> CREATE TABLE t
> (
>   , t_id                NUMBER
>   , agency_id   NUMBER(22)
>   , ackheader   ackheader_ty
>   , CONSTRAINT t_pk PRIMARY KEY (t_id)
> )
> /
>
> INSERT INTO t
> VALUES ( t_seq.nextval, 17,
> ACKHEADER_TY('2','1001','FDA','PG',null,null))
> /
>
> I need to update ONLY the 'messagedate' and 'transmissionackcode'
> without changing the other values.
>
> Thanks!

Hello,

You can update the object type just as you would update any other field. See the attached session log below:

SQL> connect amathur_at_dbdev
Connected.
SQL> drop table t cascade constraints;

Table dropped.

SQL> CREATE OR REPLACE TYPE ACKHEADER_TY

  2  	  AS OBJECT(
  3    MESSAGETYPE		     VARCHAR2(16)
  4  , MESSAGENUMB		     VARCHAR2(100)
  5  , MESSAGESENDERIDENTIFIER	     VARCHAR2(60)
  6  , MESSAGERECEIVERIDENTIFIER     VARCHAR2(60)
  7  , MESSAGEDATE		     DATE
  8  , TRANSMISSIONACKCODE	     VARCHAR2(2)
  9  		  )

 10 /

Type created.

SQL> CREATE TABLE t
  2 (
  3 -- removing leading comma
  4 -- , t_id NUMBER
  5 t_id number
  6 -- , agency_id NUMBER(22)

  7    , agency_id number(22)
  8    , ackheader   ackheader_ty
  9    , CONSTRAINT t_pk PRIMARY KEY (t_id)
 10 )
 11 /

Table created.

SQL> variable new_t_id number;
SQL> INSERT INTO t
  2 VALUES ( t_seq.nextval, 17,
  3 ACKHEADER_TY('2','1001','FDA','PG',null,null)) returning t_id   4 into :new_t_id;

1 row created.

SQL> print :new_t_id;  

NEW_T_ID


 

7

SQL> select * from t;

      T_ID
AGENCY_ID




ACKHEADER(MESSAGETYPE, MESSAGENUMB, MESSAGESENDERIDENTIFIER, MESSAGERECEIVERIDEN

         7
17
ACKHEADER_TY('2', '1001', 'FDA', 'PG', NULL, NULL) SQL> update t set ackheader =
ackheader_ty('2','1001','FDA','PG',sysdate,'OK')   2 where t_id = :new_t_id;

1 row updated.

SQL> select * from t;

      T_ID
AGENCY_ID




ACKHEADER(MESSAGETYPE, MESSAGENUMB, MESSAGESENDERIDENTIFIER, MESSAGERECEIVERIDEN

         7
17
ACKHEADER_TY('2', '1001', 'FDA', 'PG', '21-DEC-07', 'OK')

SQL> show user
USER is "AMATHUR"
SQL> select * from v$version;

BANNER



Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
PL/SQL Release 9.2.0.8.0 -
Production
CORE 9.2.0.8.0
Production
TNS for Solaris: Version 9.2.0.8.0 -
Production
NLSRTL Version 9.2.0.8.0 -
Production Received on Fri Dec 21 2007 - 09:48:05 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US