oracle ORA-00997: незаконное использование типа данных LONG без использования типа данных LONG - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно извлечь одну строку из двух представлений, используя флаг из родительского представления, чтобы определить, какой из них запрашивать. Просто для того, чтобы сфокусировать дело:

declare
    rowRetrived v_child_A%rowtype;
for key in (select value1, value2, value3, flag from v_parent_view) loop
    if flag = 'A' then
        select * into rowRetrived
        from v_child_A 
        where field1 = key.value1
        and field2 = key.value2
        and field3 = key.value3;
    end if;
    if flag = 'B' then
        select * into rowRetrived -- **** HERE THE ERROR IS RAISED ****
        from v_child_B 
        where field1 = key.value1
        and field2 = key.value2
        and field3 = key.value3;
    end if;
    doStuff(rowRetrived);
end loop;
...

Я нигде не использую тип данных LONG иЯ проверяю, что два дочерних представления имеют одинаковые поля и одинаковые типы.Я очень тяжело борюсь с этой проблемой, потому что я не знаю, как ее отладить.

Некоторые соображения:

  • и v_child_A, и v_child_B работают либо без, либо с фильтрами (например:где условие where filed1 = 'value1' and field2 = 'value2' and field3 = 'value3')
  • , хотя структура представлений одинакова, я пытаюсь объявить два различных типа строк, но ошибка все еще возникает

****** EDIT ******

Здесь следуют фактические описания представлений

V_PARENT_VIEW

ID_DISTRIBUZIONE    NUMBER  22
ID_TRAGITTO_DISTR   VARCHAR2    40
PROGR_TRAGITTO  NUMBER  22
SHIP_OU_ID  VARCHAR2    15
ACCNT_NAME  VARCHAR2    100
ROW_ID_DEST VARCHAR2    15
EDITO   NUMBER  22
EXTRA   NUMBER  22

v_child_A

ID_DISTRIBUZIONE    NUMBER  22
COD_DESTINATARIO    VARCHAR2    100
ID_DESTINATARIO VARCHAR2    15
DESTINATARIO    VARCHAR2    50
RIGA_LOCALITA   VARCHAR2    50
INDIRIZZO   VARCHAR2    50
FRAZIONE    VARCHAR2    50
PRESSO  VARCHAR2    50
PVUFF   NUMBER  22
NOTA_CONSEGNA   VARCHAR2    100
TEL_DESTINATARIO    VARCHAR2    20
FUNZIONARIO VARCHAR2    30
TEL_FUNZIONARIO VARCHAR2    20
RIGA_LOCALITA_DEST  VARCHAR2    50
INDIRIZZO_DEST  VARCHAR2    50
FRAZIONE_DEST   VARCHAR2    50
PRESSO_DEST VARCHAR2    50
TRASPORTATORE   VARCHAR2    50
ID_DISTRIBUTORE VARCHAR2    15
ID_TRAGITTO_DISTR   VARCHAR2    40
PROGR_TRAGITTO  NUMBER  22
CONS_FATTURA    NUMBER  22
NUMERO_VERDE_TEL    VARCHAR2    20
SERVIZIO_CLIENTI_FAX    VARCHAR2    20
SERVIZIO_CLIENTI_TEL    VARCHAR2    20
SERVIZIO_CLIENTI_EMAIL  VARCHAR2    20
CANALE  VARCHAR2    100
ID_PROVINCIA    NUMBER  22
ID_REGIONE  NUMBER  22
ID_NAZIONE  NUMBER  22
CAPOLUOGO   NUMBER  22
PROVINCIA   VARCHAR2    2
ROW_ID_DEST VARCHAR2    15
POSIZIONE   VARCHAR2    50

v_child_B

ID_DISTRIBUZIONE    NUMBER  22
COD_DESTINATARIO    VARCHAR2    100
ID_DESTINATARIO VARCHAR2    15
DESTINATARIO    VARCHAR2    50
RIGA_LOCALITA   VARCHAR2    50
INDIRIZZO   VARCHAR2    50
FRAZIONE    VARCHAR2    50
PRESSO  VARCHAR2    50
PVUFF   NUMBER  22
NOTA_CONSEGNA   VARCHAR2    200
TEL_DESTINATARIO    VARCHAR2    20
FUNZIONARIO VARCHAR2    30
TEL_FUNZIONARIO VARCHAR2    20
RIGA_LOCALITA_DEST  VARCHAR2    50
INDIRIZZO_DEST  VARCHAR2    50
FRAZIONE_DEST   VARCHAR2    50
PRESSO_DEST VARCHAR2    50
TRASPORTATORE   VARCHAR2    50
ID_DISTRIBUTORE VARCHAR2    15
ID_TRAGITTO_DISTR   VARCHAR2    40
PROGR_TRAGITTO  NUMBER  22
CONS_FATTURA    NUMBER  22
NUMERO_VERDE_TEL    VARCHAR2    20
SERVIZIO_CLIENTI_FAX    VARCHAR2    20
SERVIZIO_CLIENTI_TEL    VARCHAR2    20
SERVIZIO_CLIENTI_EMAIL  VARCHAR2    20
CANALE  VARCHAR2    100
ID_PROVINCIA    NUMBER  22
ID_REGIONE  NUMBER  22
ID_NAZIONE  NUMBER  22
CAPOLUOGO   NUMBER  22
PROVINCIA   VARCHAR2    2
ROW_ID_DEST VARCHAR2    15
POSIZIONE   VARCHAR2    50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...