Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Процедура не пишет в таблицу строки / 20 сообщений из 20, страница 1 из 1
05.10.2020, 14:36
    #40005449
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Доброго времени суток!
В учебных целях написала такую процедуру, которая по идее должна писать из переменной в таблицу значения.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create or replace procedure insert_err_logs is
reqid tbl%rowtype;
tbtype tbl1.type%type;
begin
  insert into v_test select id from tbl;
  for reqid in (select id from v_test)
  loop
    begin
    dbms_output.put_line('Current ID: ' || reqid.id);
      select type into tbtype from tbl1 where id = reqid.id and type = 'refill';
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
      insert into tbl2 (id, type, col) select * from tbl1 where id = reqid.id and type = 'withdrawal';
      end;
    end loop;
    execute immediate 'truncate table v_test';
end;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> select * from tbl1;

        ID TYPE                 COL
---------- -------------------- ------------------------------
       123 withdraw             first row
       223 withdraw             second row
       332 refill               third row
       432 refill               fourth row
       532 refill               fifth row
       634 production           sixth row
       734 production           seventh row
       332 withdraw             thirdrow_
       432 withdraw             fourthrow_
       532 withdraw             fifthrow_

10 rows selected



Прошу сильно не ругать, так как только учусь писать процедуры :)
...
Рейтинг: 0 / 0
05.10.2020, 14:49
    #40005454
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOnaПрошу сильно не ругать, так как только учусь писать процедуры :)

Как раз поэтому-то можно и нужно ругать. Это при реальной работе можно за такой говнокод
молча уволить...

Вообще непонятно что Вы в этой процедуре пытаетесь сделать. Хаотичное нагромождение
бессмысленного кода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2020, 14:57
    #40005458
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOna,

v_test Вам нужен для учебы?

ps
что в select id from tbl;?

.....
stax
...
Рейтинг: 0 / 0
05.10.2020, 14:59
    #40005461
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Stax, да, v_test нужен для учёбы.
...
Рейтинг: 0 / 0
05.10.2020, 15:02
    #40005462
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOna
Stax, да, v_test нужен для учёбы.

что в select id from tbl;?

.....
stax
...
Рейтинг: 0 / 0
05.10.2020, 15:05
    #40005464
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Dimitry Sibiryakov, спасибо за критику!
В общих чертах, нужно перенести из одной таблицы в другую строки, где type = withdrawal.
Условие: id, которая имеет строку refill, строку withdrawal не надо переносить
...
Рейтинг: 0 / 0
05.10.2020, 15:06
    #40005467
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Stax,
SQL> select * from tbl;

ID LOC
---------- ----------
123 first row
223 second row
332 third row
432 fourth row
532 fifth row
634 sixth row
734 seventh ro

7 rows selected

в общем-то ничего особенного
...
Рейтинг: 0 / 0
05.10.2020, 15:11
    #40005470
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOnaнужно перенести из одной таблицы в другую строки, где type = withdrawal.

Код: sql
1.
insert into tbl2 select * from tbl1 t where type = 'withdrawal'



LenaOnaid, которая имеет строку refill, строку withdrawal не надо переносить

Код: sql
1.
and not exists (select * from tbl1 tt where t.id=tt.id and tt.type = 'refill'


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2020, 15:16
    #40005473
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Dimitry Sibiryakov,

Код: plsql
1.
2.
3.
4.
SQL> select * from tbl2;

        ID TYPE                 COL                                 STATE
---------- -------------------- ------------------------------ ----------
...
Рейтинг: 0 / 0
05.10.2020, 15:20
    #40005475
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOna, предполагается, что студент изучает то, что написал.

'withdraw'

'withdrawal'
...
Рейтинг: 0 / 0
05.10.2020, 15:21
    #40005476
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Значит в реальной таблице для каждой строки с withdrawal есть соответствующая с refill.
Или Вы даже запрос скопипастить толком не смогли.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2020, 15:21
    #40005477
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOna,

select * from tbl1 where id = reqid.id and type = 'withdraw al ';

нет в tbl1 строк с type = 'withdrawal';
вот и Процедура не пишет в таблицу строки


зы
reqid tbl%rowtype; и for reqid in ето РАЗНЫЕ (два) reqid;

....
stax
...
Рейтинг: 0 / 0
05.10.2020, 15:23
    #40005479
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
dmdmdm,

Как я проморгала этот момент! Вот спасибо, не увидела!
...
Рейтинг: 0 / 0
05.10.2020, 15:30
    #40005482
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Dimitry Sibiryakov, вот именно, что не для каждой строки.
...
Рейтинг: 0 / 0
05.10.2020, 15:32
    #40005484
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOnaКак я проморгала этот момент!

Очень просто: никогда не училась отлаживать запросы разбивая их на части и контролируя
результат каждого куска по отдельности. Это обычный результат изучения предмета методом тыка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2020, 15:33
    #40005485
LenaOna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Я понимаю, что мой код далеко не идеальный, поэтому буду рада, если предложите варианты оптимизации :)
...
Рейтинг: 0 / 0
05.10.2020, 15:44
    #40005488
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
LenaOna
Я понимаю, что мой код далеко не идеальный, поэтому буду рада, если предложите варианты оптимизации :)

тут два момента

1) научится писать процедуры (для такого переноса процедура не нужна)
2) перенести данные 22209137


....
stax
...
Рейтинг: 0 / 0
06.10.2020, 09:06
    #40005604
misterbean
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
Люди, помогите решить, пожалуйста, тест по оракл

https://vk.com/doc276692157_570085231?hash=6da843d0b7fc672e6c&dl=10c7373eb9ea9a7494 - Файл с тестом.

ПДФ файл сюда не прикрепляется из размера
...
Рейтинг: 0 / 0
06.10.2020, 16:00
    #40005808
НеофитSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
misterbean,

Посмотрите сюда, пожалуйста: https://dbfiddle.uk/

Это сайт, на котором можно исполнять команды SQL.
Он вам поможет самостоятельно решить (и возможно, понять) как минимум первый вопрос.

Также вам возможно будет интересна эта статья: https://paperpaper.ru/cheating/
...
Рейтинг: 0 / 0
06.10.2020, 16:22
    #40005832
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура не пишет в таблицу строки
НеофитSQL
Посмотрите сюда, пожалуйста: https://dbfiddle.uk/
Это сайт, на котором можно исполнять команды SQL.


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


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