powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Странная ошибка при селекте ORA-00932 expected DATE got -
7 сообщений из 7, страница 1 из 1
Странная ошибка при селекте ORA-00932 expected DATE got -
    #39440061
Всем привет!
Поймал странную ошибку при выполнении запроса - "ORA-00932: inconsistent data types: expected DATE got -"
Если убрать джойн или одно из условий джойна, то все будет работать.
Вот запрос:
Код: sql
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.
WITH foo(dt) AS
(
                SELECT trunc(sysdate, 'mm') as dt
                FROM 
                dual

               UNION ALL
               
                SELECT 
                   cast(d.dt as date) +1 
                FROM foo d
                WHERE 1=1 
                and d.dt < last_day(trunc(sysdate, 'mm'))
)
SELECT 
d.dt
FROM
      foo d 
LEFT JOIN
     (
          select 1 as id, trunc(sysdate, 'mm') as begin_dt from dual
     )  g 
        ON 1=1 
           and g.id in (
               select 1 from dual
           )                                                   
           and  d.dt = g.begin_dt; 


ОС: oracle Linux 7.2
DB: oracle 11.2.0.4 x64
Саппорта нет :(
Подскажите плиз что это такое, бага оракла?
...
Рейтинг: 0 / 0
Странная ошибка при селекте ORA-00932 expected DATE got -
    #39440092
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОхУжЭтотОраклПодскажите плиз что это такое, бага оракла?
Код: plsql
1.
2.
dump(d.dt)       Typ=12 Len=7: 120,117,4,1,1,1,1
dump(g.begin_dt) Typ=13 Len=8: 225,7,4,1,0,0,0,0 
...
Рейтинг: 0 / 0
Странная ошибка при селекте ORA-00932 expected DATE got -
    #39440121
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORA__SQLОхУжЭтотОраклПодскажите плиз что это такое, бага оракла?
Код: plsql
1.
2.
dump(d.dt)       Typ=12 Len=7: 120,117,4,1,1,1,1
dump(g.begin_dt) Typ=13 Len=8: 225,7,4,1,0,0,0,0 

Куда-то меня понесло ... Просто перепиши через Oracle Syntax (+)
...
Рейтинг: 0 / 0
Странная ошибка при селекте ORA-00932 expected DATE got -
    #39440183
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОхУжЭтотОракл,

Баг с трансформацией внешнего ansi join с подзапросом в предикатах. Отфильтруй по подзапросу до соединения.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with foo(dt)
     as (select trunc(sysdate, 'mm') as dt from dual
         union all
         select cast(d.dt as date) + 1
           from foo d
          where 1 = 1 and d.dt < last_day(trunc(sysdate, 'mm')))
select d.dt
  from    foo d
       left join
          (select *
             from (select 1 as id, trunc(sysdate, 'mm') as begin_dt from dual) g
            where g.id in (select 1 from dual)) g
       on 1 = 1 and d.dt = g.begin_dt;
...
Рейтинг: 0 / 0
Странная ошибка при селекте ORA-00932 expected DATE got -
    #39440206
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORA__SQLОхУжЭтотОраклПодскажите плиз что это такое, бага оракла?
Код: plsql
1.
2.
dump(d.dt)       Typ=12 Len=7: 120,117,4,1,1,1,1
dump(g.begin_dt) Typ=13 Len=8: 225,7,4,1,0,0,0,0 

А кто может объяснить разницу Typ=12 и Typ=13?
...
Рейтинг: 0 / 0
Странная ошибка при селекте ORA-00932 expected DATE got -
    #39440210
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORA__SQLА кто может объяснить разницу Typ=12 и Typ=13? STFF
...
Рейтинг: 0 / 0
Странная ошибка при селекте ORA-00932 expected DATE got -
    #39440568
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОхУжЭтотОракл,

11.2.0.4 нет под рукой, но вот workaround для 12.1.0.2 (в 12.2 ora-7445 [qctcopn]) через sqlpatch/non-mergeable view, чтобы вообще не переписывать/меньше переписывать.
Если хочется что-то пописать, rownum>0 в подзапрос можно добавить.
Код: 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.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
SQL> WITH foo(dt) AS
  2  (
  3   SELECT trunc(sysdate, 'mm') as dt
  4   FROM
  5   dual
  6  UNION ALL
  7   SELECT
  8  	 cast(d.dt as date) +1
  9   FROM foo d
 10   WHERE 1=1
 11   and d.dt < last_day(trunc(sysdate, 'mm'))
 12  )
 13  SELECT
 14  d.dt
 15  FROM
 16  	   foo d
 17  LEFT JOIN
 18  	  (
 19  	       select /* no_merge*/1 as id, trunc(sysdate, 'mm') as begin_dt from dual
 20  	  )  g
 21  	     ON 1=1
 22  		and g.id in (
 23  		    select 1 from dual
 24  		)
 25  		and  d.dt = g.begin_dt;
    cast(d.dt as date) +1
         *
ERROR at line 8:
ORA-00932: inconsistent datatypes: expected DATE got -


SQL> WITH foo(dt) AS
  2  (
  3   SELECT trunc(sysdate, 'mm') as dt
  4   FROM
  5   dual
  6  UNION ALL
  7   SELECT
  8  	 cast(d.dt as date) +1
  9   FROM foo d
 10   WHERE 1=1
 11   and d.dt < last_day(trunc(sysdate, 'mm'))
 12  )
 13  SELECT /*+ OUTLINE_LEAF(@"SEL$2") */
 14  d.dt
 15  FROM
 16  	   foo d
 17  LEFT JOIN
 18  	  (
 19  	       select /* no_merge*/1 as id, trunc(sysdate, 'mm') as begin_dt from dual
 20  	  )  g
 21  	     ON 1=1
 22  		and g.id in (
 23  		    select 1 from dual
 24  		)
 25  		and  d.dt = g.begin_dt;

DT
-------------------
01.04.2017 00:00:00
25.04.2017 00:00:00
05.04.2017 00:00:00
16.04.2017 00:00:00
19.04.2017 00:00:00
17.04.2017 00:00:00
14.04.2017 00:00:00
20.04.2017 00:00:00
12.04.2017 00:00:00
02.04.2017 00:00:00
29.04.2017 00:00:00
18.04.2017 00:00:00
11.04.2017 00:00:00
26.04.2017 00:00:00
24.04.2017 00:00:00
03.04.2017 00:00:00
10.04.2017 00:00:00
27.04.2017 00:00:00
06.04.2017 00:00:00
08.04.2017 00:00:00
28.04.2017 00:00:00
22.04.2017 00:00:00
09.04.2017 00:00:00
30.04.2017 00:00:00
04.04.2017 00:00:00
23.04.2017 00:00:00
15.04.2017 00:00:00
13.04.2017 00:00:00
21.04.2017 00:00:00
07.04.2017 00:00:00

30 rows selected.

SQL> declare
  2    l_sqltxt varchar2(32767) := q'#
  3  WITH foo(dt) AS
  4  (
  5   SELECT trunc(sysdate, 'mm') as dt
  6   FROM
  7   dual
  8  UNION ALL
  9   SELECT
 10  	 cast(d.dt as date) +1
 11   FROM foo d
 12   WHERE 1=1
 13   and d.dt < last_day(trunc(sysdate, 'mm'))
 14  )
 15  SELECT
 16  d.dt
 17  FROM
 18  	   foo d
 19  LEFT JOIN
 20  	  (
 21  	       select /* no_merge*/1 as id, trunc(sysdate, 'mm') as begin_dt from dual
 22  	  )  g
 23  	     ON 1=1
 24  		and g.id in (
 25  		    select 1 from dual
 26  		)
 27  		and  d.dt = g.begin_dt
 28    #';
 29  begin
 30    sys.dbms_sqldiag_internal.i_create_patch (
 31  	 sql_text  => l_sqltxt,
 32  	 hint_text => 'OUTLINE_LEAF(@"SEL$2")'
 33    );
 34  end;
 35  /

PL/SQL procedure successfully completed.

SQL> WITH foo(dt) AS
  2  (
  3   SELECT trunc(sysdate, 'mm') as dt
  4   FROM
  5   dual
  6  UNION ALL
  7   SELECT
  8  	 cast(d.dt as date) +1
  9   FROM foo d
 10   WHERE 1=1
 11   and d.dt < last_day(trunc(sysdate, 'mm'))
 12  )
 13  SELECT
 14  d.dt
 15  FROM
 16  	   foo d
 17  LEFT JOIN
 18  	  (
 19  	       select /* no_merge*/1 as id, trunc(sysdate, 'mm') as begin_dt from dual
 20  	  )  g
 21  	     ON 1=1
 22  		and g.id in (
 23  		    select 1 from dual
 24  		)
 25  		and  d.dt = g.begin_dt;

DT
-------------------
01.04.2017 00:00:00
25.04.2017 00:00:00
05.04.2017 00:00:00
16.04.2017 00:00:00
19.04.2017 00:00:00
17.04.2017 00:00:00
14.04.2017 00:00:00
20.04.2017 00:00:00
12.04.2017 00:00:00
02.04.2017 00:00:00
29.04.2017 00:00:00
18.04.2017 00:00:00
11.04.2017 00:00:00
26.04.2017 00:00:00
24.04.2017 00:00:00
03.04.2017 00:00:00
10.04.2017 00:00:00
27.04.2017 00:00:00
06.04.2017 00:00:00
08.04.2017 00:00:00
28.04.2017 00:00:00
22.04.2017 00:00:00
09.04.2017 00:00:00
30.04.2017 00:00:00
04.04.2017 00:00:00
23.04.2017 00:00:00
15.04.2017 00:00:00
13.04.2017 00:00:00
21.04.2017 00:00:00
07.04.2017 00:00:00

30 rows selected.

SQL> #0 explain plan for
SQL> /

Explained.

SQL> select * from table(dbms_xplan.display( format=> 'basic note'));

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3635753519

----------------------------------------------------------------------
| Id  | Operation				   | Name	     |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT			   |		     |
|   1 |  HASH JOIN OUTER			   |		     |
|   2 |   VIEW					   |		     |
|   3 |    UNION ALL (RECURSIVE WITH) BREADTH FIRST|		     |
|   4 |     FAST DUAL				   |		     |
|   5 |     RECURSIVE WITH PUMP 		   |		     |
|   6 |   VIEW					   | VW_DCL_03AAE89B |
|   7 |    HASH JOIN				   |		     |
|   8 |     VIEW				   | VW_NSO_1	     |
|   9 |      FAST DUAL				   |		     |
|  10 |     VIEW				   |		     |
|  11 |      FAST DUAL				   |		     |
----------------------------------------------------------------------

Note
-----
   - automatic DOP: Computed Degree of Parallelism is 1 because of parallel threshold
   - SQL patch "SYS_SQLPTCH_015b83e633a3000a" used for this statement

...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Странная ошибка при селекте ORA-00932 expected DATE got -
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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