Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle REF не може да премине

Трябва да зададете псевдоним на таблицата и след това да се обърнете към колоната чрез:

.. 

SQL Fiddle

Настройка на схема на Oracle 11g R2 :

създайте или заменете тип t_document като обект ( IdDocument Number(10) ) /създайте документ на таблица на t_document( първичен ключ(IdDocument)) /INSERT INTO документ ИЗБЕРЕТЕ t_document(1) ОТ DUALUNION ВСИЧКИ ИЗБЕРЕТЕ t_document(2) FROM DUAL/създайте или заменете тип t_emprunteur като обект ( IdEmprunteur Number(10) ) /създайте таблица emprunteur на t_emprunteur( първичен ключ(IdEmprunteur)) /INSERT INTO emprunteur SELECT t_emprunteur(1) FROM DUALUNION ALL SELECT t_emprunteur(2) FROM DUAL/ създайте или заменете тип t_exemplaire като обект ( IdExemplaire Number(10), NumeroRayon Number(5), Document ref t_document) /създайте таблица exemplaire на t_exemplaire( първичен ключ(IdExemplaire), ограничение Document_c CHECK (Документът не е null)) /INSERT INTO exemplaire SELECT t_exemplaire( 1, 13, (SELECT REF(d) FROM document d WHERE d.IdDocument =2) ) FROM DUALUNION ALL SELECT t_exemplaire( 2, 42, (SELECT REF(d) FROM docu ment d WHERE d.IdDocument =1) ) FROM DUAL/създайте или заменете тип t_emprunt като обект ( IdEmprunt Number(10), DateD DATE, DateF DATE, Emprunteur_ref ref t_emprunteur, Exemplaire_ref ref t_exemplaire )/създайте таблица emprunt на t_emprunt( първичен ключ (IdEmprunt), Emprunteur_ref scope е emprunteur, Exemplaire_ref scope е exemplaire, DateD по подразбиране sysdate) /INSERT INTO emprunt SELECT t_emprunt( 1, SYSDATE, SYSDATE - 1, (SELECT REF(e) FROM emprunteur e WHERE e.IdEmprunteur =1), (SELECT REF(e) FROM exemplaire e WHERE e.IdExemplaire =2) ) FROM DUALUNION ALL SELECT t_emprunt( 2, TO_DATE( '2000/01/01', 'YYYY/MM/DD' ), TO_DATE( '2001/12 /31', 'ГГГГ/ММ/ДД' ), (ИЗБЕРЕТЕ REF(e) FROM emprunteur e WHERE e.Id Emprunteur =2), (SELECT REF(e) FROM exemplaire e WHERE e.IdExemplaire =1) ) FROM DUAL/CREATE INDEX emprunt_emprunteur_ref_idx ON emprunt (Emprunteur_ref)/ 

Заявка 1 :

ИЗБЕРЕТЕ e.IdEmprunt, e.Emprunteur_ref.IdEmprunteur, e.Exemplaire_ref.IdExemplaire, e.Exemplaire_ref.NumeroRayon, e.Exemplaire_ref.Document.IdDocumentFROM emprunt e 

Резултати :

<предварителен код>| ИДЕМПРУНТ | EMPRUNTEUR_REF.IDEMPRUNTEUR | EXEMPLAIRE_REF.IDEXEMPLAIRE | EXEMPLAIRE_REF.NUMERORAYON | EXEMPLAIRE_REF.DOCUMENT.IDDOCUMENT ||-----------|-----------------------------|- ----------------------------|-------------------- -------|------------------------------------|| 1 | 1 | 2 | 42 | 1 || 2 | 2 | 1 | 13 | 2 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се зареди файл или сборка „Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342“

  2. Как трябва да редактирам заявката, за да подобря производителността, като същевременно запазя съществуващата структура?

  3. Функция TO_TIMESTAMP_TZ() в Oracle

  4. Как да създадете съхранена процедура на Oracle, която може да връща конкретни обекти, както и всички обекти

  5. Как да изброите всички таблици в Oracle