oracle ORA-00997:不使用LONG数据类型而非法使用LONG数据类型

时间:2018-12-21 10:37:53

标签: oracle

我需要使用父视图中的标志从两个视图中提取一行,以确定要查询的是哪一个 仅关注案例:

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子句为where filed1 = 'value1' and field2 = 'value2' and field3 = 'value3'
  • 尽管视图的结构相同,但我尝试声明两个不同的行类型变量,但仍然引发错误

******编辑******

在这里按照视图的实际描述

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

0 个答案:

没有答案