Oracle PL/SQL之嵌套表(Nested Table)


Oracle PL/SQL之嵌套表(Nested Table)Test Code:

  1. Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.7.0   
  2. Connected as xxpo  
  3.    
  4. SQL> CREATE OR REPLACE TYPE color_tab_t AS TABLE OF VARCHAR2(30);  
  5.   2  /  
  6.    
  7. Type created  
  8.    
  9. SQL>   
  10. SQL> CREATE TABLE color_models (  
  11.   2  model_type VARCHAR2(12)  
  12.   3  , colors color_tab_t  
  13.   4  )  
  14.   5  NESTED TABLE colors STORE AS color_model_colors_tab  
  15.   6  /  
  16.    
  17. Table created  
  18.    
  19. SQL>   
  20. SQL> BEGIN  
  21.   2  INSERT INTO color_models  
  22.   3  VALUES ('RGB', color_tab_t ('RED','GREEN','BLUE'));  
  23.   4  END;  
  24.   5  /  
  25.    
  26. PL/SQL procedure successfully completed  
  27.    
  28. SQL> select * from color_models;  
  29.    
  30. MODEL_TYPE   COLORS  
  31. ------------ ------  
  32. RGB          <Objec  
  33.    
  34. SQL> select * from color_model_colors_tab;  
  35.    
  36. select * from color_model_colors_tab  
  37.    
  38. ORA-22812: cannot reference nested table column's storage table  
  39.    
  40. SQL>   
  41. SQL> SELECT object_name  
  42.   2        ,object_type  
  43.   3        ,status  
  44.   4  FROM   dba_objects  
  45.   5  WHERE  object_name = upper('COLOR_MODEL_COLORS_TAB');  
  46.    
  47. OBJECT_NAME                                                                      OBJECT_TYPE         STATUS  
  48. -------------------------------------------------------------------------------- ------------------- -------  
  49. COLOR_MODEL_COLORS_TAB                                                           TABLE               VALID  
  50.    
  51. SQL> SELECT /*+NESTED_TABLE_GET_REFS+*/ * FROM COLOR_MODEL_COLORS_TAB;  
  52.    
  53. COLUMN_VALUE  
  54. ------------------------------  
  55. RED  
  56. GREEN  
  57. BLUE  
  58.    
  59. SQL>   

相关内容