powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка объекта в объект
19 сообщений из 19, страница 1 из 1
Вставка объекта в объект
    #40012596
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, не получается добавить запись.

Созданные объекты:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
CREATE OR REPLACE TYPE O_BAGAZAS_LIETAS AS OBJECT(
    NOSAUKUMS VARCHAR(50),
    SVARS FLOAT
);
 
CREATE OR REPLACE TYPE O_BAGAZS AS OBJECT(
    BAGAZAS_LIETAS REF O_BAGAZAS_LIETAS
);
 
CREATE OR REPLACE TYPE O_PASAZIERI AS OBJECT(
    UZVARDS VARCHAR(30),
    VARDS VARCHAR(20),
    BAGAZS REF O_BAGAZS
);
 
CREATE OR REPLACE TYPE O_STUARTES AS OBJECT(
    UZVARDS VARCHAR(30),
    VARDS VARCHAR(20)
);
 
CREATE OR REPLACE TYPE O_PILOTI AS OBJECT(
    UZVARDS VARCHAR(30),
    VARDS VARCHAR(20)
);
 
CREATE OR REPLACE TYPE O_BRIGADES AS OBJECT(
    NUMURS NUMBER,
    APZIMEJUMS VARCHAR(100),
    PILOTI REF O_PILOTI,
    STUARTI REF O_STUARTES
);
 
CREATE OR REPLACE TYPE O_LIDMASINA AS OBJECT(
    TIPS VARCHAR(50),
    NUMURS NUMBER,
    BRIGADES REF O_BRIGADES
);
 
CREATE OR REPLACE TYPE O_REISI AS OBJECT(
    NUMURS NUMBER,
    NOSAUKUMS VARCHAR(30),
    PASAZIERI REF O_PASAZIERI,
    LIDMASINAS REF O_LIDMASINA
);
 
CREATE OR REPLACE TYPE O_LIDOSTAS AS OBJECT(
    NUMURS NUMBER,
    NOSAUKUMS VARCHAR(30),
    TELEFONI NUMBER,
    REISI REF O_REISI
);
 
CREATE TABLE LIDOSTA_TBL(
    LIDOSTA O_LIDOSTAS NOT NULL
);



Код вставки:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
INSERT INTO LIDOSTA_TBL VALUES (LIDOSTA(55, 'TEST', 258925, 
REISI(258952, 'AFJKAF', 
PASAZIERI('TEST', 'TEST', 
BAGAZS(BAGAZAS_LIETAS('JDASK', 9155.25)), 
LIDMASINAS('BOING', 51205, 
BRIGADES(81295, '125ASJKFJ981JF8A8', 
PILOTI('TEST', 'TEST'), 
STUARTI('TEST', 'TEST')
)))));



Ругается на:
SQL Error: ORA-00917: отсутствует запятая
00917. 00000 - "missing comma"


Откуда там запятая взяться должна ума не приложу, тк указывает на скобки в конце.
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012605
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скобка у VALUES() не закрыта.
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012609
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
INSERT INTO LIDOSTA_TBL VALUES (LIDOSTA(55, 'TEST', 258925, 
REISI(258952, 'AFJKAF', 
PASAZIERI('TEST', 'TEST', 
BAGAZS(BAGAZAS_LIETAS('JDASK', 9155.25)), 
LIDMASINAS('BOING', 51205, 
BRIGADES(81295, '125ASJKFJ981JF8A8', 
PILOTI('TEST', 'TEST'), 
STUARTI('TEST', 'TEST')
))))));



Cкобку закрыл теперь такая ошибка:

SQL Error: ORA-00904: "LIDOSTA": недопустимый идентификатор
00904. 00000 - "%s: invalid identifier"
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012611
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pumpk1n,

И что такое LIDOSTA?
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012612
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PuM256,

наверное O_LIDOSTAS )
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012613
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PuM256, LIDOSTA - объект. Если перевод нужен то - аэропорт (с латышского языка).
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012615
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
INSERT INTO lidosta_tbl VALUES ( o_lidostas(55, 'TEST', 258925, o_reisi(258952, 'AFJKAF', o_pasazieri('TEST', 'TEST', o_bagazs(o_bagazas_lietas
('JDASK', 9155.25))), o_lidmasina('BOING', 51205, o_brigades(81295, '125ASJKFJ981JF8A8', o_piloti('TEST', 'TEST'), o_stuartes('TEST', 'TEST'
))))) );



Ну теперь вообще весело:

Error at Command Line : 1 Column : 128
Error report -
SQL Error: ORA-00932: несовместимые типы данных: ожидается REF USER.O_BAGAZAS_LIETAS, получено USER.O_BAGAZAS_LIETAS
00932. 00000 - "inconsistent datatypes: expected %s got %s"
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012618
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pumpk1n
ожидается REF USER.O_BAGAZAS_LIETAS, получено USER.O_BAGAZAS_LIETAS
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012619
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, я слабоват в этом, можешь объяснить конкретнее ошибку?
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012628
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pumpk1n
я слабоват в этом

лаба ?
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012629
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй, лабараторка, да. Но интерес весь в том что, мы на парах сидим только в ворд документ смотрим и нам на пальцах пытаются код объяснить как работает, вместо того чтобы посадить за компьютеры и нормально дать потыкать самим. Универ вообще весь в приколах.
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012659
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pumpk1n
andrey_anonymous, я слабоват в этом, можешь объяснить конкретнее ошибку?

Оно ждет ССЫЛКУ на где-то существующий объект.
Не сам объект.
Аналогия - Вы можете положить в сейф свидетельство о собственности на квартиру, но саму квартиру в сейф положить затруднительно.
Как заказали - так и работает.
Код: plsql
1.
2.
3.
4.
5.
6.
CREATE OR REPLACE TYPE O_LIDOSTAS AS OBJECT(
    NUMURS NUMBER,
    NOSAUKUMS VARCHAR(30),
    TELEFONI NUMBER,
    REISI REF O_REISI
);
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012662
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pumpk1n
лабараторка
, да. Но интерес весь в том что, мы на парах сидим только в ворд документ смотрим и нам на пальцах пытаются код объяснить как работает, вместо того чтобы посадить за компьютеры и нормально дать потыкать самим. Универ вообще весь в приколах.



лабараторка по REF или по OBJECT?

.....
stax
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012666
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, а как тогда эту ссылку найти? или вызвать?
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012668
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pumpk1n
andrey_anonymous, а как тогда эту ссылку найти? или вызвать?

Ну как-как... Создать объект, сохранить его и получить ссылку (адрес проживания объекта).
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012669
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, видимо не до конца понимаю.

Я же создал объект O_REISI.
И вроде создал саму ссылку REISI.

Или я ошибаюсь?

Код: sql
1.
REISI REF O_REISI
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012675
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pumpk1n
andrey_anonymous, видимо не до конца понимаю.

Я же создал объект O_REISI.

Не объект, но его описание - чертёж, если угодно.
Сам объект (экземпляр, то, что можно "потрогать") Вы пытаетесь создать по чертежу O_REINSI непосредственно в insert.
Вот на этот экземпляр и надо получить ссылку.
А для этого - предварительно где-то его сохранить (материализовать).
Потому как атрибут
Код: plsql
1.
REISI REF O_REISI


способен хранить только свидетельство о праве собственности, но не сам объект.
Т.е. в пределах одного insert Ваша структура сформирована быть не может.
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012685
pumpk1n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, можете это в коде отобразить (если это возможно)? я вообще пока не въезжаю -_-
...
Рейтинг: 0 / 0
Вставка объекта в объект
    #40012697
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pumpk1n,

22222332

ps
для двух "первых обектов"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SQL> create table t_o1 of O_BAGAZAS_LIETAS;

Table created.

SQL> insert into t_o1 values('Львів',77);

1 row created.

SQL> create table t_o2(id int,o2 O_BAGAZS);

Table created.

SQL> insert into t_o2 select 1,O_BAGAZS(ref(t))from t_o1 t where NOSAUKUMS='Львів';

1 row created.

SQL> commit;

Commit complete.

SQL> select deref(t.O2.BAGAZAS_LIETAS) from t_o2 t where id=1;

DEREF(T.O2.BAGAZAS_LIETAS)(NOSAUKUMS, SVARS)
--------------------------------------------------------------------------------
O_BAGAZAS_LIETAS('Львів', 77)

SQL>



....
stax
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка объекта в объект
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]