Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка в анонимном блоке / 24 сообщений из 24, страница 1 из 1
16.11.2020, 10:49
    #40018700
Ошибка в анонимном блоке
Имеется таблица и анонимный блок, в котором есть ошибка, задание такое мол найди исправь ошибки и все. Ну я подправила некоторые моменты в селекте и еще в пару местах теперь выдает другую ошибку, Я понимаю, что решается это легко, но словила стоп в голове. Извините если напрягаю)))

create table SH_TEST_SH_TEST_VIEW_HISTORY
(
cust_id NUMBER not null,
cust_sys_code VARCHAR2(32) not null,
cust_name VARCHAR2(256),
calc_date DATE
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
next 1M
minextents 1
maxextents unlimited
)
compress
nologging;
/
create index SH_TEST_VIEW_HISTORY_D on SH_TEST_SH_TEST_VIEW_HISTORY (CALC_DATE)
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)
nologging;
/

DECLARE
l_Cnt_Del NUMBER;
BEGIN
Dbms_Mview.Refresh('SH_TEST_SH_TEST_VIEW_HISTORY', Atomic_Refresh => FALSE);
Dbms_Stats.Gather_Table_Stats(Ownname => 'SH_TEST',
Tabname => 'SH_TEST_VIEW_MV',
Estimate_Percent => 10,
Method_Opt => 'FOR ALL COLUMNS SIZE 1',
Degree => 4,
Cascade => FALSE,
No_Invalidate => FALSE);
INSERT --+ append
INTO SH_TEST_SH_TEST_VIEW_HISTORY
SELECT Trunc(SYSDATE),cvh.cust_id,cvh.calc_date,cvh.cust_name
FROM SH_TEST_SH_TEST_VIEW_HISTORY Cvh;
DELETE FROM SH_TEST_SH_TEST_VIEW_HISTORY Cvh
WHERE Cvh.Calc_Date < Trunc(SYSDATE) - 14;
l_Cnt_Del := SQL%ROWCOUNT;
COMMIT;

IF l_Cnt_Del > 0 THEN
EXECUTE IMMEDIATE 'alter table SH_TEST_SH_TEST_VIEW_HISTORY shrink space cascade';
EXECUTE IMMEDIATE 'alter index SH_TEST_VIEW_HISTORY_D rebuild';
END IF;
Sys.Dbms_Stats.Gather_Table_Stats(Ownname => 'SH_TEST',
Tabname => 'SH_TEST_VIEW_HISTORY',
Estimate_Percent => 10,
Method_Opt => 'FOR ALL COLUMNS SIZE 1',
Degree => 4,
Cascade => TRUE,
No_Invalidate => FALSE);
END;


Ошибка: Error report -
ORA-06550: Строка 14, столбец 13:
PL/SQL: ORA-00932: несовместимые типы данных: ожидается NUMBER, получено DATE
ORA-06550: Строка 12, столбец 3
...
Рейтинг: 0 / 0
16.11.2020, 11:08
    #40018706
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Лера Халера
SELECT Trunc(SYSDATE),

Это по
Лера Халера
PL/SQL: ORA-00932:


Какой функционал была попытка заложить в этот код?
...
Рейтинг: 0 / 0
16.11.2020, 11:17
    #40018708
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
env,

Я так понимаю, из приведенного надо соорудить валидный скрипт матвью + скрипт рефреша
...
Рейтинг: 0 / 0
16.11.2020, 11:28
    #40018712
Ошибка в анонимном блоке
env, Там выше вперед написали. В общем поменяла sysdate.
теперь такое вылазит
ORA-23401: материализованное представление "SYS"."SH_TEST_SH_TEST_VIEW_HISTORY" не существует
...
Рейтинг: 0 / 0
16.11.2020, 11:43
    #40018722
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Лера Халера,

Наверное, потому что его нет. Открываете документацию и читаете, что же такое materialized view.
...
Рейтинг: 0 / 0
16.11.2020, 12:07
    #40018738
Ошибка в анонимном блоке
env, это я поняла, теперь другой вопрос. Можно ли засунуть материализованное представление в мой begin? именно создание или нужно все же создавать отдельно ?
...
Рейтинг: 0 / 0
16.11.2020, 12:32
    #40018755
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Лера Халера
env, это я поняла

Вам надо понять что должен делать скрипт
ошибок не будет, а скрипт выполняет левую работу

напр
insert сохраняет все (откуда?) , а удаляет за две недели (где?)

SH_TEST_SH_TEST_VIEW_HISTORY таблица (create),
Refresh('SH_TEST_SH_TEST_VIEW_HISTORY', таблицы?

и тд

.....
stax
...
Рейтинг: 0 / 0
16.11.2020, 13:38
    #40018812
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Для начала, используйте SRC
Лера Халера
Имеется таблица и анонимный блок, в котором есть ошибка, задание такое мол найди исправь ошибки и все. Ну я подправила некоторые моменты в селекте и еще в пару местах теперь выдает другую ошибку, Я понимаю, что решается это легко, но словила стоп в голове. Извините если напрягаю)))

Код: plsql
1.
2.
3.
4.
5.
6.
7.
create table SH_TEST_SH_TEST_VIEW_HISTORY
(
  cust_id                NUMBER not null,
  cust_sys_code          VARCHAR2(32) not null,
  cust_name              VARCHAR2(256),  
  calc_date              DATE
)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table SH_TEST_SH_TEST_VIEW_HISTORY
(
  cust_id                NUMBER not null,
  cust_sys_code          VARCHAR2(32) not null,
  cust_name              VARCHAR2(256),  
  calc_date              DATE
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 80K
    next 1M
    minextents 1
    maxextents unlimited
  )
compress
nologging;
/


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create index SH_TEST_VIEW_HISTORY_D on SH_TEST_SH_TEST_VIEW_HISTORY (CALC_DATE)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  )
  nologging;
/



Код: 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.
DECLARE
  l_Cnt_Del NUMBER;
BEGIN
  Dbms_Mview.Refresh('SH_TEST_SH_TEST_VIEW_HISTORY', Atomic_Refresh => FALSE);
  Dbms_Stats.Gather_Table_Stats(Ownname          => 'SH_TEST',
                                Tabname          => 'SH_TEST_VIEW_MV',
                                Estimate_Percent => 10,
                                Method_Opt       => 'FOR ALL COLUMNS SIZE 1',
                                Degree           => 4,
                                Cascade          => FALSE,
                                No_Invalidate    => FALSE);
  INSERT --+ append
  INTO SH_TEST_SH_TEST_VIEW_HISTORY
    SELECT  Trunc(SYSDATE),cvh.cust_id,cvh.calc_date,cvh.cust_name
      FROM SH_TEST_SH_TEST_VIEW_HISTORY Cvh;
  DELETE FROM SH_TEST_SH_TEST_VIEW_HISTORY Cvh
   WHERE Cvh.Calc_Date < Trunc(SYSDATE) - 14;
  l_Cnt_Del := SQL%ROWCOUNT;
  COMMIT;

  IF l_Cnt_Del > 0 THEN
    EXECUTE IMMEDIATE 'alter table SH_TEST_SH_TEST_VIEW_HISTORY shrink space cascade';
    EXECUTE IMMEDIATE 'alter index SH_TEST_VIEW_HISTORY_D rebuild';
  END IF;
  Sys.Dbms_Stats.Gather_Table_Stats(Ownname          => 'SH_TEST',
                                    Tabname          => 'SH_TEST_VIEW_HISTORY',
                                    Estimate_Percent => 10,
                                    Method_Opt       => 'FOR ALL COLUMNS SIZE 1',
                                    Degree           => 4,
                                    Cascade          => TRUE,
                                    No_Invalidate    => FALSE);
END;



Код: plsql
1.
2.
3.
4.
Ошибка: Error report -
ORA-06550: Строка 14, столбец 13:
PL/SQL: ORA-00932: несовместимые типы данных: ожидается NUMBER, получено DATE
ORA-06550: Строка 12, столбец 3



Что тут непонятного (не считая всего остального):
Так как не указали порядок столбцов, пытаетесь в
Код: plsql
1.
2.
  
cust_id                NUMBER not null,


Вставить DATE
Код: plsql
1.
 Trunc(SYSDATE)
...
Рейтинг: 0 / 0
16.11.2020, 15:47
    #40018923
Ошибка в анонимном блоке
Vadim Lejnin, это я все поменяла. Сейчас вылазит другая ошибка и с ней вопрос, можно ли в begin запихнуть создание materialized view?
...
Рейтинг: 0 / 0
16.11.2020, 15:51
    #40018926
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Лера Халера,

Откройте уже доку. Если очень извернуться, то конечно можно. Но не нужно.
...
Рейтинг: 0 / 0
17.11.2020, 01:43
    #40019209
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Лера Халера,

Можно сделать все. Непонятно, что тебе нужно. Задачу опиши с самого начала.
...
Рейтинг: 0 / 0
17.11.2020, 13:26
    #40019388
Ошибка в анонимном блоке
oragraf, мне просто поставили задачу исправить ошибки в коде, не сказали, что за код и что он выполняет. Просто найти и справить ошибки. Кручусь, как могу.
...
Рейтинг: 0 / 0
17.11.2020, 17:21
    #40019578
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Лера Халера,

студент?

1 Разобраться с именованием объектов. sh_test - это схема.
2. Соорудить матвью on demand с запросом на основе приведенных insert/delete. Данные из таблицы в матвью.
3. добавить слешей и точек с запятыми где нужно.
4. в блоке оставить рефреш + сбор статистики по правильным объектам
...
Рейтинг: 0 / 0
18.11.2020, 09:19
    #40019809
vita0609
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
oragraf,
это задача на собеседовании в одну из организаций (знаю в какую)).
...
Рейтинг: 0 / 0
18.11.2020, 09:33
    #40019814
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Если они так принимают на работу, с вероятностью, близкой, к 100%, они почитывают sql.ru.

Учтите это, Лера :).
...
Рейтинг: 0 / 0
18.11.2020, 09:34
    #40019815
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
vita0609,

Озвучьте, чтобы сразу туда не ходить. А то вдруг вопрос из боевого кода.
...
Рейтинг: 0 / 0
18.11.2020, 09:42
    #40019820
vita0609
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
env,
не могу так поступить.
ошибки тоже не могу выложить. Наткнулся случайно)
...
Рейтинг: 0 / 0
18.11.2020, 10:41
    #40019833
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
vita0609
oragraf,
это задача на собеседовании в одну из организаций (знаю в какую)).
Я сдал?(с)
...
Рейтинг: 0 / 0
18.11.2020, 14:51
    #40019951
graycode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
oragraf
Я сдал?(с)

На хрустальный шар 80-го уровня? Да, но это не точно))
...
Рейтинг: 0 / 0
18.11.2020, 15:25
    #40019975
graycode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Код: 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.
create table SH_TEST_HISTORY
(
  cust_id                NUMBER not null,
  cust_sys_code          VARCHAR2(32) not null,
  cust_name              VARCHAR2(256),  
  calc_date              DATE
);

ALTER TABLE SH_TEST_HISTORY ENABLE ROW MOVEMENT;

create index SH_TEST_HISTORY_D on SH_TEST_HISTORY (CALC_DATE);

insert into SH_TEST_HISTORY 
select level, to_char(level), 'bla-bla', trunc(sysdate) - level
from dual connect by level <= 30;

DECLARE
  l_Cnt_Del NUMBER;
BEGIN
  DELETE FROM SH_TEST_HISTORY Cvh
   WHERE Cvh.Calc_Date < Trunc(SYSDATE) - 14;
  l_Cnt_Del := SQL%ROWCOUNT;
  COMMIT;

  IF l_Cnt_Del > 0 THEN
    EXECUTE IMMEDIATE 'alter table SH_TEST_HISTORY shrink space cascade';
    EXECUTE IMMEDIATE 'alter index SH_TEST_HISTORY_D rebuild';
  END IF;
      Dbms_Stats.Gather_Table_Stats(Ownname          => 'SH_TEST',
                                    Tabname          => 'SH_TEST_HISTORY',
                                    Estimate_Percent => 10,
                                    Method_Opt       => 'FOR ALL COLUMNS SIZE 1',
                                    Degree           => 4,
                                    Cascade          => TRUE,
                                    No_Invalidate    => FALSE);
END;
/

select * from SH_TEST_HISTORY;


Однако чего хотел автор задачи так и остается загадкой ...
...
Рейтинг: 0 / 0
18.11.2020, 17:49
    #40020061
vita0609
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
graycode,
тут же все понятно. Автор хотел чтобы вы дали готовое и правильное решение задачи для собеседования. И по возможности объяснили в чем суть. Самому/самой подумать разобрать что для чего нужно, нет особого желания. В оракл засунуть код и посмотреть какие ошибки будут, когда не созданы ни таблицы ни схемы..)
...
Рейтинг: 0 / 0
18.11.2020, 17:59
    #40020066
graycode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
vita0609,

Про автора топика все понятно, а вот чего хотел автор самой задачи для собеседования непонятно, выше oragraf предположил что цель это создание материализованного представления, я же наоборот выкинул все что касается mv, собственно при отсутствии задачи можно нафантазировать что угодно, так чего в итоге в качестве ответа там хотели увидеть?))
...
Рейтинг: 0 / 0
18.11.2020, 18:32
    #40020075
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
graycode

...так чего в итоге в качестве ответа там хотели увидеть?))

Код: plsql
1.
2.
3.
4.
begin
  null;
end;
/ 



?
делает ровно то же (при отсутвие таблиц, представлений), зато ошибок нет
...
Рейтинг: 0 / 0
18.11.2020, 18:44
    #40020083
graycode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в анонимном блоке
Leonid Kudryavtsev,

Это был первый вариант ответа, который решает поставленную задачу: "задание такое мол найди исправь ошибки и все", наиболее оптимальным образом.

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


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