powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка в анонимном блоке
24 сообщений из 24, страница 1 из 1
Ошибка в анонимном блоке
    #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
Ошибка в анонимном блоке
    #40018706
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лера Халера
SELECT Trunc(SYSDATE),

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


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

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

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

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

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

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

и тд

.....
stax
...
Рейтинг: 0 / 0
Ошибка в анонимном блоке
    #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
Ошибка в анонимном блоке
    #40018923
Vadim Lejnin, это я все поменяла. Сейчас вылазит другая ошибка и с ней вопрос, можно ли в begin запихнуть создание materialized view?
...
Рейтинг: 0 / 0
Ошибка в анонимном блоке
    #40018926
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лера Халера,

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

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

студент?

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

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

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

На хрустальный шар 80-го уровня? Да, но это не точно))
...
Рейтинг: 0 / 0
Ошибка в анонимном блоке
    #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
Ошибка в анонимном блоке
    #40020061
vita0609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
graycode,
тут же все понятно. Автор хотел чтобы вы дали готовое и правильное решение задачи для собеседования. И по возможности объяснили в чем суть. Самому/самой подумать разобрать что для чего нужно, нет особого желания. В оракл засунуть код и посмотреть какие ошибки будут, когда не созданы ни таблицы ни схемы..)
...
Рейтинг: 0 / 0
Ошибка в анонимном блоке
    #40020066
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vita0609,

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

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

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



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

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

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


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