Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql собеседование / 25 сообщений из 32, страница 1 из 2
21.07.2016, 17:24:19
    #39278104
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
всем привет.
Коллеги, я начинающий разработчик и при решении задачи возникли сложности, прошу помочь если можете.
Есть 4 таблицы test1,test2,load,errore.Данные есть только для таблицы test1.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table test1(code varchar(5), name varchar2(10),ch_date date);--
create table test2(id number(5),code varchar(5), name varchar2(5),ch_date date,load_id number(5));--
create table log (id number(5),start_date date,end_date date,num_rows number(5),num_err number(5),num_rows_ins number(5));--num_rows количесво строк, num_err кол-во  ошибок при ставке, num_rows_ins-количество вставлено 
create table error (load_id number(5),code varchar(5),err varchar2(20));

insert into test1 values('001','NM1','01.07.2016');
insert into test1 values('002','NM2','01.07.2016');
insert into test1 values('003','NM3','01.07.2016');
insert into test1 values('001','NM11','05.07.2016');
insert into test1 values('006','ABCDEFG','06.07.2016');


Нужно написать процедуру которая загружает все данные в таблицу test2:к примеру поле name ABCDEFG не совпадает по количеству символов и должно загрузиться в таблицу error.
...
Рейтинг: 0 / 0
21.07.2016, 17:28:46
    #39278109
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
пример:
в таблицу test2 добавится 4 записи, к примеру:80,003,NM3,01.06,12
в таблице лог log будт только одна запись: 12, 5--записей всего, 1--одна ошибка, 4--вставлено в таблицу.
в таблице errore:12,005,ошибка не совпадает количество символов
...
Рейтинг: 0 / 0
21.07.2016, 17:38:24
    #39278123
я помогу
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
начинать надо так:
Код: plsql
1.
create or replace procedure



откуда загружает?
сколько денег предлагали на собеседовании?
...
Рейтинг: 0 / 0
21.07.2016, 17:41:29
    #39278130
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
я помогу,из таблицы test1. Не предлагали) Я не работал с этими понятиями пока, так как я начинающий разработчик
...
Рейтинг: 0 / 0
21.07.2016, 17:41:35
    #39278131
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
max_1923,

решил сэкономить на чтении книг, иди на курсы, где тебе их прочитает преподаватель.
...
Рейтинг: 0 / 0
21.07.2016, 17:44:18
    #39278138
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
declare
v_err VARCHAR2(64);

begin
for cur_cas in (select * from test1)
loop
insert into test2 values(my_seq.nextval,cur_cas.code,cur_cas.name,cur_cas.ch_date,my_seq.currval);
end loop;

exception when others then
errm := sqlerrm;
when others then
insert into err$log (my_seq.currval,cur_cas.code,'err');

end;
...
Рейтинг: 0 / 0
21.07.2016, 17:45:07
    #39278140
sql собеседование
max_1923я помогу,из таблицы test1. Не предлагали) Я не работал с этими понятиями пока, так как я начинающий разработчик
и я тебе напишу процедуру.

а вообще вот тут для таких как ты всё написано
...
Рейтинг: 0 / 0
21.07.2016, 17:45:11
    #39278142
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
к\возникли сложности при вставки ошибки в таблицу, про что лучше прочитать чтоб разобраться как вставлять ошибку в таблицу?
...
Рейтинг: 0 / 0
21.07.2016, 17:46:10
    #39278145
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
Я хочу разобраться и сделать это задание, но мне нужна помощь
...
Рейтинг: 0 / 0
21.07.2016, 17:48:12
    #39278150
sql собеседование
max_1923
exception when others then
...
when others then
...
...
Рейтинг: 0 / 0
21.07.2016, 17:49:38
    #39278151
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
почитай про эксепшены,
по ошибке лишнее ставил
...
Рейтинг: 0 / 0
21.07.2016, 17:51:03
    #39278153
sql собеседование
max_1923create table test2(id number(5),code varchar(5), name varchar2(5),ch_date date,load_id number(5));
...
insert into test2 values(my_seq.nextval,cur_cas.code,cur_cas.name,cur_cas.ch_date,my_seq.currval);
...
Рейтинг: 0 / 0
21.07.2016, 17:51:45
    #39278155
ларри э.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
читай доку по pl/sql
...
Рейтинг: 0 / 0
21.07.2016, 17:54:53
    #39278159
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
тогда кто-нибудь объясните пожалуйста. вот вставляю я данные из таблицы test 1 в test2, id- поле будет уникальный id, через сиквенс сделаю, а вот поле load_id это id процедуры, как тогда этот id получить?
...
Рейтинг: 0 / 0
21.07.2016, 17:58:38
    #39278163
телепат
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
max_1923 load_id это id процедуры, как тогда этот id получить?
наверное из v$session?
...
Рейтинг: 0 / 0
21.07.2016, 18:04:16
    #39278167
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
телепат,а есть еще какие-нибудь варианты? или можно только так?к примеру доспутим нету такой таблицы
...
Рейтинг: 0 / 0
21.07.2016, 18:19:40
    #39278178
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
max_1923есть еще какие-нибудь варианты?сколько не спрашивай букв, осмысленные предложения на языке писать не научишься, пока не изучишь всю азбуку, словарь (хотя бы общеупотребительную часть), грамматику.
...
Рейтинг: 0 / 0
21.07.2016, 18:22:53
    #39278180
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
-2-,ну в спешке написал) только не нужно цепляться за слова
...
Рейтинг: 0 / 0
21.07.2016, 18:23:19
    #39278181
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
сделал так select sys_context('userenv','sessionid') Session_ID into load_id from dual;
...
Рейтинг: 0 / 0
21.07.2016, 19:08:26
    #39278199
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
все-таки данный результат возвращает id сессии, а хотелось бы получить id при каждом запуске процедуры
...
Рейтинг: 0 / 0
21.07.2016, 19:28:17
    #39278210
Michael Isaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
max_1923,

EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('TEST2', 'TEST2_ERR');

INSERT INTO TEST2 (id, code, name, ch_date, load_id)
SELECT test2_seq.nextval, code, name, ch_date, :l_load_id FROM TEST1
LOG ERRORS INTO TEST2_ERR ('daily_load') REJECT LIMIT UNLIMITED;
...
Рейтинг: 0 / 0
22.07.2016, 01:37:29
    #39278288
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
в таком таком условия обрабатывается только одна ошибка
when OTHERS
then err_msg := substr(sqlerrm, 1, 200);
insert into err$load values (load_id,l_code,err_msg);

как сделать, к примеру если при загрузки данных в таблицу несколько ошибок, то чтоб в этом условии добавлялись сразу все ошибки? а не одна
...
Рейтинг: 0 / 0
22.07.2016, 01:38:41
    #39278289
max_1923
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
Michael Isaev,а как он генерирует id процедуры ?
...
Рейтинг: 0 / 0
22.07.2016, 09:10:29
    #39278344
Valergrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql собеседование
Вдруг пригодится тебе

https://oracle-base.com/articles/10g/dml-error-logging-10gr2
...
Рейтинг: 0 / 0
22.07.2016, 09:20:44
    #39278352
sql собеседование
max_1923телепат,а есть еще какие-нибудь варианты? или можно только так?к примеру доспутим нету такой таблицы
есть
или так можно
и без примера такой таблицы нет и никогда не было
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql собеседование / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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