I have the following table declaration and I’m trying to use a case statement to INSERT some rows and I’m getting the following error
ORA-00976: Specified pseudocolumn or operator not allowed here.
Can someone please let me know how to rectify the INSERT code.
Thanks in advance to all who answer.
CREATE TABLE T21 ( seq_num NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH 1) NOT NULL, num NUMBER(*,0) NOT NULL, state VARCHAR2(20) NOT NULL ) PARTITION BY LIST (state) AUTOMATIC (PARTITION P_CALIFORNIA VALUES ('CALIFORNIA') ); insert into T21 (num, state) VALUES (LEVEL, CASE round(dbms_random.value(1,50)) WHEN 1 THEN 'Alabama' WHEN 2 THEN 'Alaska' WHEN 3 THEN 'Arizona' WHEN 4 THEN 'Arkansas' WHEN 5 THEN 'California' WHEN 6 THEN 'Colorado' WHEN 7 THEN 'Connecticut' WHEN 8 THEN 'Delaware' WHEN 9 THEN 'Florida' WHEN 10 THEN 'Georgia' WHEN 11 THEN 'Hawaii' WHEN 12 THEN 'Idaho' WHEN 13 THEN 'Illinois' WHEN 14 THEN 'Indiana' WHEN 15 THEN 'Iowa' WHEN 16 THEN 'Kansas' WHEN 17 THEN 'Kentucky' WHEN 18 THEN 'Louisiana' WHEN 19 THEN 'Maine' WHEN 20 THEN 'Maryland' WHEN 21 THEN 'Massachusetts' WHEN 22 THEN 'Michigan' WHEN 23 THEN 'Minnesota' WHEN 24 THEN 'Mississippi' WHEN 25 THEN 'Missouri' WHEN 26 THEN 'Montana' WHEN 27 THEN 'Nebraska' WHEN 28 THEN 'Nevada' WHEN 29 THEN 'New Hampshire' WHEN 30 THEN 'New Jersey' WHEN 31 THEN 'New Mexico' WHEN 32 THEN 'New York' WHEN 33 THEN 'North Carolina' WHEN 34 THEN 'North Dakota' WHEN 35 THEN 'Ohio' WHEN 36 THEN 'Oklahoma' WHEN 37 THEN 'Oregon' WHEN 38 THEN 'Pennsylvania' WHEN 39 THEN 'Rhode Island' WHEN 40 THEN 'South Carolina' WHEN 41 THEN 'South Dakota' WHEN 42 THEN 'Tennessee' WHEN 43 THEN 'Texas' WHEN 44 THEN 'Utah' WHEN 45 THEN 'Vermont' WHEN 46 THEN 'Virginia' WHEN 47 THEN 'Washington' WHEN 48 THEN 'West Virginia' WHEN 49 THEN 'Wisconsin' WHEN 50 THEN 'Wyoming' END AS state) CONNECT BY LEVEL<=100;
Advertisement
Answer
level
pseudocolumn goes with select
(not just values
).
I modified your code a little bit (I’m on 11gXE, it doesn’t allow partitions nor identity columns – you can leave both of those if your database supports them). Also, NOT NULL
constraint should be removed for the state
column.
SQL> create table t21 2 (seq_num number, 3 num number(*,0), 4 state varchar2(20) 5 ); Table created.
Insert:
SQL> insert into t21 (num, state) 2 select 3 level, 4 case round(dbms_random.value(1,50)) 5 when 1 then 'Alabama' 6 when 2 then 'Alaska' 7 when 3 then 'Arizona' 8 when 4 then 'Arkansas' 9 when 5 then 'California' 10 when 6 then 'Colorado' 11 when 7 then 'Connecticut' 12 when 8 then 'Delaware' 13 when 9 then 'Florida' 14 when 10 then 'Georgia' 15 when 11 then 'Hawaii' 16 when 12 then 'Idaho' 17 when 13 then 'Illinois' 18 when 14 then 'Indiana' 19 when 15 then 'Iowa' 20 when 16 then 'Kansas' 21 when 17 then 'Kentucky' 22 when 18 then 'Louisiana' 23 when 19 then 'Maine' 24 when 20 then 'Maryland' 25 when 21 then 'Massachusetts' 26 when 22 then 'Michigan' 27 when 23 then 'Minnesota' 28 when 24 then 'Mississippi' 29 when 25 then 'Missouri' 30 when 26 then 'Montana' 31 when 27 then 'Nebraska' 32 when 28 then 'Nevada' 33 when 29 then 'New Hampshire' 34 when 30 then 'New Jersey' 35 when 31 then 'New Mexico' 36 when 32 then 'New York' 37 when 33 then 'North Carolina' 38 when 34 then 'North Dakota' 39 when 35 then 'Ohio' 40 when 36 then 'Oklahoma' 41 when 37 then 'Oregon' 42 when 38 then 'Pennsylvania' 43 when 39 then 'Rhode Island' 44 when 40 then 'South Carolina' 45 when 41 then 'South Dakota' 46 when 42 then 'Tennessee' 47 when 43 then 'Texas' 48 when 44 then 'Utah' 49 when 45 then 'Vermont' 50 when 46 then 'Virginia' 51 when 47 then 'Washington' 52 when 48 then 'West Virginia' 53 when 49 then 'Wisconsin' 54 when 50 then 'Wyoming' 55 end 56 from dual 57 connect by level <= 100; 100 rows created. SQL>
Result:
SQL> select * From t21; SEQ_NUM NUM STATE ---------- ---------- -------------------- 1 Indiana 2 Alaska 3 Mississippi 4 New Jersey 5 Missouri 6 Nebraska 7 Washington 8 Washington 9 Alaska 10 Maryland 11 Missouri 12 Florida 13 New Hampshire 14 Colorado 15 South Dakota 16 Tennessee 17 Arizona 18 Alaska 19 Iowa 20 Pennsylvania 21 Indiana 22 Pennsylvania 23 Louisiana 24 Mississippi 25 Rhode Island 26 Virginia 27 New Hampshire 28 Missouri 29 Georgia 30 Missouri 31 Massachusetts 32 Oklahoma 33 Rhode Island 34 South Dakota 35 Georgia 36 Alaska 37 Georgia 38 New Hampshire 39 Michigan 40 Connecticut 41 Idaho 42 Maine 43 South Carolina 44 Hawaii 45 Alaska 46 Washington 47 Iowa 48 New Mexico 49 Oregon 50 Colorado 51 Kansas 52 Wisconsin 53 California 54 Ohio 55 Kentucky 56 Arizona 57 Washington 58 Arizona 59 California 60 North Dakota 61 Alabama 62 Louisiana 63 North Dakota 64 South Carolina 65 Hawaii 66 North Dakota 67 Hawaii 68 Pennsylvania 69 North Dakota 70 Illinois 71 West Virginia 72 Illinois 73 Maryland 74 Arkansas 75 West Virginia 76 Iowa 77 Ohio 78 New York 79 Colorado 80 Montana 81 Alaska 82 Utah 83 Mississippi 84 Indiana 85 Florida 86 Oregon 87 Pennsylvania 88 Oregon 89 Utah 90 Iowa 91 Ohio 92 Georgia 93 Virginia 94 Colorado 95 Virginia 96 Michigan 97 Arizona 98 Wyoming 99 West Virginia 100 Ohio 100 rows selected. SQL>