Home » SQL & PL/SQL » SQL & PL/SQL » update without listing columns
update without listing columns [message #10471] Sun, 25 January 2004 22:43 Go to next message
schnee
Messages: 1
Registered: January 2004
Junior Member
Anybody remember how to update a row without listing columns, but just values?

UPDATE newtable SET (2,3,4); //????

or

UPDATE newtable SET VALUE (5,6,7); // ???
Re: update without listing columns [message #10475 is a reply to message #10471] Sun, 25 January 2004 23:12 Go to previous message
William Robertson
Messages: 1643
Registered: August 2003
Location: London, UK
Senior Member
Only if it's an object table AFAIK. For example say we have an object type PERSON:
SQL> desc person
 Name                            Null?    Type
 ------------------------------- -------- ----
 ID                                       NUMBER
 GENDER                                   VARCHAR2(1)
 FIRST_NAME                               VARCHAR2(40)
 LAST_NAME                                VARCHAR2(40)
 BIRTH_DATE                               DATE

SQL>  CREATE TABLE people OF PERSON;

Table created.

SQL> INSERT INTO people
  2  ( id
  3  , gender
  4  , first_name
  5  , last_name
  6  , birth_date )
  7  VALUES
  8  ( 1
  9  , 'M'
 10  , 'Lisa'
 11  , 'Simpson'
 12  , DATE '1994-01-01' );

1 row created.

SQL> INSERT INTO people
  2  ( id
  3  , gender
  4  , first_name
  5  , last_name
  6  , birth_date )
  7  VALUES
  8  ( 2
  9  , 'M'
 10  , 'Bart'
 11  , 'Simpson'
 12  , DATE '1993-01-01' );

1 row created.

SQL> commit;

Commit complete.

SQL> select * from people;

    ID G FIRST_NAME           LAST_NAME            BIRTH_DATE
------ - -------------------- -------------------- -----------
     1 M Lisa                 Simpson              01-JAN-1994
     2 M Bart                 Simpson              01-JAN-1993

2 rows selected.

<b>SQL> UPDATE people p SET p = PERSON(1, 'F', 'Lisa', 'Simpson', DATE '1994-01-01') WHERE id = 1;</b>

1 row updated.

SQL> select * from people;

   ID G FIRST_NAME           LAST_NAME            BIRTH_DATE
----- - -------------------- -------------------- -----------
    1 F Lisa                 Simpson              01-JAN-1994
    2 M Bart                 Simpson              01-JAN-1993

2 rows selected.

-- Try the same syntax on an ordinary (non-object) table:

SQL> create table regular_table as select * from people;

Table created.

SQL> UPDATE regular_table p SET p = PERSON(1, 'F', 'Lisa', 'Simpson', DATE '1994-01-01') WHERE id = 1;
UPDATE regular_table p SET p = PERSON(1, 'F', 'Lisa', 'Simpson', DATE '1994-01-01') WHERE id = 1
                           *
ERROR at line 1:
ORA-00904: "P": invalid identifier

SQL>
Previous Topic: autoexec.bat
Next Topic: Problem with EXECUTE IMMEDIATE
Goto Forum:
  


Current Time: Fri Apr 26 03:22:24 CDT 2024