|
|
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Необходимо привести данные в разных входных таблицах в соответсвие с эталонной таблицей. Для этого нужно вытащить из входных таблиц все данные которые не совпадают с эталоном и занести их в EXCEPTIONS вместе с данными несоответствия (код ошибки, значение из входной таблицы) для дальнейшего разбора ручным либо автоматическим способом. После каждого разбора производится еще один цикл полного сравнения-сканирования всех данных со входной таблицы. Если после обработки и рескана входной таблицы ошибка изменилась либо устранена, то данные в EXCEPTIONS следует изменить либо удалить. Наличие занесенной ошибки в EXCEPTIONS определяется по полям ID_XREF+XREF_TABLE_NAME +ERR_ID+SRC_KEY_VAL. Необходимо реализовать в виде встроенной процедуры часть процесса связанную со сканированием, сравнением с эталоном и изменение EXCEPTIONS. В качестве входных параметров процедура должна уметь принимать(для создания динамического query) 1. Имя эталонной таблицы + эталонное поле для сравнения (Пример: PRODUCT_XREF and OUT_OF_PRINT_DATE). Эталонная таблица всегда содержит поле "ID_XREF" 2. Имя входной таблицы + поле для сравнения (Пример: AUTHORS and END_DATE) 3. Join Constraint: ID_XREF либо OBJ_ID (Пример: PRODUCT_XREF.ID_XREF=AUTHORS.ID_XREF) 4. Сравнительный Constraint определяющий совпадение с эталоном (Пример: PRODUCT_XREF.OUT_OF_PRINT_DATE = AUTHORS.END_DATE) Если Constraint не выполнен, то входные данные не совпадают с эталоном. Сравнительный Constraint может быть сложным и состоять из нескольких сравнений по нескольким полям. 5. Имя ошибки ERR_NM Эталонная таблица: CREATE TABLE "PRODUCT_XREF" ( "ID_XREF" NUMBER(38,0) NOT NULL ENABLE, "SYSTEM" CHAR(14 CHAR) NOT NULL ENABLE, "OBJ_ID" NUMBER(38,0), "END_DATE" DATE, "OUT_OF_PRINT_DATE" DATE, "TITLE" VARCHAR2(1000 CHAR) CONSTRAINT "PRODUCT_XREF_PK" PRIMARY KEY ("ID_XREF") ) Таблица ошибок: CREATE TABLE "ERRORS" ( "ERR_ID" NUMBER NOT NULL ENABLE, "ERR_NM" VARCHAR2(30 CHAR), CONSTRAINT "ERRORS_PK" PRIMARY KEY ("ERR_ID") ) Таблица несоответствий : CREATE TABLE "EXCEPTIONS" ( "ID_XREF" NUMBER, "XREF_TABLE_NAME" VARCHAR2(30 CHAR), "SRC_KEY_VAL" VARCHAR2(255 CHAR), -- Значение из входной таблицы "ERR_ID" NUMBER NOT NULL ENABLE, "CREATE_DATE" DATE, CONSTRAINT "EXCEPTIONS_ERR_ID_FK" FOREIGN KEY ("ERR_ID") REFERENCES "ERRORS" ("ERR_ID") ENABLE ) Фактически уникальный ключ этой таблицы ID_XREF+XREF_TABLE_NAME+ERR_ID Имя и структуру входной таблицы придумать самостоятельно. Как примеры: CREATE TABLE "AUTHORS" ( "ID_XREF" NUMBER(38,0) NOT NULL ENABLE, "AUTHOR" CHAR(100 CHAR) NOT NULL ENABLE, "END_DATE" DATE CONSTRAINT "AUTHORS_PK" PRIMARY KEY ("ID_XREF") ) CREATE TABLE "OBJTREE" ( "ID" NUMBER(38,0) NOT NULL ENABLE, "OBJ_ID" NUMBER(38,0), "SYSTEM" CHAR(14 CHAR) NOT NULL ENABLE, "TITLE" VARCHAR2(1000 CHAR) CONSTRAINT "OBJTREE_PK" PRIMARY KEY ("ID") ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 16:45 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Для начала, уважай коллег Используй оформление, читать невозможно, сравни: zemik69Необходимо привести данные в разных входных таблицах в соответсвие с эталонной таблицей. Для этого нужно вытащить из входных таблиц все данные которые не совпадают с эталоном и занести их в EXCEPTIONS вместе с данными несоответствия (код ошибки, значение из входной таблицы) для дальнейшего разбора ручным либо автоматическим способом. После каждого разбора производится еще один цикл полного сравнения-сканирования всех данных со входной таблицы. Если после обработки и рескана входной таблицы ошибка изменилась либо устранена, то данные в EXCEPTIONS следует изменить либо удалить. Наличие занесенной ошибки в EXCEPTIONS определяется по полям ID_XREF+XREF_TABLE_NAME +ERR_ID+SRC_KEY_VAL. Необходимо реализовать в виде встроенной процедуры часть процесса связанную со сканированием, сравнением с эталоном и изменение EXCEPTIONS. В качестве входных параметров процедура должна уметь принимать(для создания динамического query) 1. Имя эталонной таблицы + эталонное поле для сравнения (Пример: PRODUCT_XREF and OUT_OF_PRINT_DATE). Эталонная таблица всегда содержит поле "ID_XREF" 2. Имя входной таблицы + поле для сравнения (Пример: AUTHORS and END_DATE) 3. Join Constraint: ID_XREF либо OBJ_ID (Пример: PRODUCT_XREF.ID_XREF=AUTHORS.ID_XREF) 4. Сравнительный Constraint определяющий совпадение с эталоном (Пример: PRODUCT_XREF.OUT_OF_PRINT_DATE = AUTHORS.END_DATE) Если Constraint не выполнен, то входные данные не совпадают с эталоном. Сравнительный Constraint может быть сложным и состоять из нескольких сравнений по нескольким полям. 5. Имя ошибки ERR_NM Эталонная таблица: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Таблица ошибок: Код: plsql 1. 2. 3. 4. 5. Таблица несоответствий : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Фактически уникальный ключ этой таблицы ID_XREF+XREF_TABLE_NAME+ERR_ID Имя и структуру входной таблицы придумать самостоятельно. Как примеры: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 1) Прочитай: Студентам, желающим помощи 2) Покажи тестовые данные, лучше в виде with 3) Покажи, что написал, и что не получается... p.s. называть таблицу служебным словом "EXCEPTIONS", конечно можно, но можно словить такие грабли, что фиг концы потом найдешь. чем не угодило использование префикса? tEXCEPTIONS,t_EXCEPTIONS,tab_EXCEPTIONS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 17:29 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Vadim Lejninp.s. называть таблицу служебным словом "EXCEPTIONS"вендора не смущает 1647913 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:18 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Vadim Lejninчем не угодило использование префикса?Префиксы являются следствием навязываемой загнивающим Западом идеологии. Там принято писать префиксы mr., mrs., dr. и т.д., чтобы легче было поддерживать дискриминацию по половому признаку, по образованию и т.п. Использовать нужно суффиксы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:34 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Vadim Lejninчем не угодило использование префикса? tEXCEPTIONS,t_EXCEPTIONS,tab_EXCEPTIONSЗачем ограничивать такой великолепный подход только именама таблиц. Имена колонок тоже можно префексировать, напоминая, что речь про колонку. Гурманы еще добавляют суффикс с именем типа. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:47 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopГурманы еще добавляют суффикс с именем типа. Даже не гурманы временами склоняются к подобным стандартам, особенно если работают над крупной системой. ...но полные имена типов - перебор, конечно. Чаще всякие сокращения вроде dt_, n_, s_ и т.п. Временами реально помогает избегать неявных преобразований и бесконечного шаренья по DDL, что экономит время. К примеру, подобные фрагменты даже в многостраничном запросе к малознакомым объектам вызывают немедленную реакцию вида " АХТУНГ, неявное преобразование" при code review: Код: plsql 1. или Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:59 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbms_photoshopГурманы еще добавляют суффикс с именем типа. Даже не гурманы временами склоняются к подобным стандартам, особенно если работают над крупной системой. ...но полные имена типов - перебор, конечно. Чаще всякие сокращения вроде dt_, n_, s_ и т.п. Временами реально помогает избегать неявных преобразований и бесконечного шаренья по DDL, что экономит время. К примеру, подобные фрагменты даже в многостраничном запросе к малознакомым объектам вызывают немедленную реакцию вида " АХТУНГ, неявное преобразование" при code review: Код: plsql 1. Секция предикаты в плане позволяет избежать шаренья по DDL в подобных случаях. andrey_anonymous Код: plsql 1. Как правило модель данных проектирует человек, который чуть более профессионален чем типичный кодер. И он должен продумывать так, чтоб неявных преобразований было минимум. В общем случае от креативной личности, которая захочет вызвать to_date, защиты нет. Ну и с суффиксом date в имени это отдельный случай, поскольку слово помимо типа данных означает просто "дата". Не далее чем неделю назад была проблема на работе, что отсекалось столетие, после модификации дарования из солнечной страны. Выглядело это так Код: plsql 1. p_blabla_date - это переменная типа date. Защита от таких идиотов одна - отсекать их на интервью. Но это отдельный разговор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 20:00 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopandrey_anonymousК примеру, подобные фрагменты даже в многостраничном запросе к малознакомым объектам вызывают немедленную реакцию вида " АХТУНГ, неявное преобразование" при code review: Код: plsql 1. Секция предикаты в плане позволяет избежать шаренья по DDL в подобных случаях. Угу. И DDL можно почитать. И еще миллион телодвижений сделать. А можно просто сразу слать, едва увидев текст. Даже не подключаясь к БД. dbms_photoshopandrey_anonymous Код: plsql 1. Как правило модель данных проектирует человек, который чуть более профессионален чем типичный кодер. И он должен продумывать так, чтоб неявных преобразований было минимум. Поддерживаю полностью. И продуманные стандарты именования - немаловажная составная часть этой работы. ...стандарт именования не всегда подразумевает 1:1 префикс-тип данных. Он может быть и несколько разнообразнее - в частности, удобно иметь индикаторы первичного и внешних ключей, а равно - требования к именованию оных. Что позволяет, к примеру, отмечать ошибки в предикатах соединения. Помимо прочего, стандартизованные префиксы (на атрибуты, переменные, параметры) позволяют исключить как класс ошибки разыменования в пакетах. Разумно стандартизованные наименования объектов БД позволяют не заглядывать лишний раз в словарь. ...в общем и целом, совершенно не разделяю скептицизма/сарказма в отношении стандартов именования. По данной теме у меня всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 21:20 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Vadim Lejnin, здравствуйте! Извините за мое оформление. Пока располагаю только следующей подсказкой: задачу можно решить одним динамическим SQL на основе например outer join. В нем будут дыры при невыполнении эти дыры собрать запросом оберткой переданных условий соединения, который будет вокруг основного, далее открыть неявный курсор for rec in (запрос обертка from (основной запрос)), далее записывать в exception если такого id_xref нет или же апдейтить если он там имеется. В конце одним delete удалить из exception те записи id_xref которые не попали в курсор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 09:49 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Включение мета информации в наименование таблиц/столбцов в целях упрощения жизни недумающих людей не кажется мне разумным решением. Не говоря уже про усложнение сопровождения, ну вдруг там тип поля "код" необходимо будут со временем поменять со строки на число или наоборот. Это не касается суфиксов для имен параметров/переменных/integrity constraints/etc и вообще необходимости наличия стандарта как такового. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 10:51 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbms_photoshopпропущено... Секция предикаты в плане позволяет избежать шаренья по DDL в подобных случаях. Угу. И DDL можно почитать. И еще миллион телодвижений сделать. А можно просто сразу слать, едва увидев текст. Даже не подключаясь к БД. dbms_photoshopпропущено... Как правило модель данных проектирует человек, который чуть более профессионален чем типичный кодер. И он должен продумывать так, чтоб неявных преобразований было минимум. Поддерживаю полностью. И продуманные стандарты именования - немаловажная составная часть этой работы. ...стандарт именования не всегда подразумевает 1:1 префикс-тип данных. Он может быть и несколько разнообразнее - в частности, удобно иметь индикаторы первичного и внешних ключей, а равно - требования к именованию оных. Что позволяет, к примеру, отмечать ошибки в предикатах соединения. Помимо прочего, стандартизованные префиксы (на атрибуты, переменные, параметры) позволяют исключить как класс ошибки разыменования в пакетах. Разумно стандартизованные наименования объектов БД позволяют не заглядывать лишний раз в словарь. ...в общем и целом, совершенно не разделяю скептицизма/сарказма в отношении стандартов именования. По данной теме у меня всё. +1, Поддерживаю полностью в качестве фонового бонуса - любой стандарт именования ведёт к не _конфликту прикладного творчества с opaкловыми reserved words, за счет того, что префиксы или суффиксы вносят в имена специфические элементы здорового дебилизма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 11:10 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Коллеги, все ваши замечания касаемо именования и оформления как могут помочь решить задачу? Если возможно оцените решение, которое я писал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:10 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
zemik69Коллеги, все ваши замечания касаемо именования и оформления как могут помочь решить задачу? Если возможно оцените решение, которое я писал выше. Vadim LejninДля начала, уважай коллег ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 12:53 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
MadDog, я извинился за оформление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 13:00 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
От вас пока не видно SQL-код на тему 3) Покажи, что написал, и что не получается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 13:27 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousИ еще миллион телодвижений сделать.Да, еще вспомнил про compilation warnings, которые отлавливают определенные виды implicits. orawishв качестве фонового бонуса - любой стандарт именования ведёт к не _конфликту прикладного творчества с opaкловыми reserved words, за счет того, что префиксы или суффиксы вносят в имена специфические элементы здорового дебилизма Для фонового бонуса еще можно в конце каждого имени добавлять $... или это уже будут элементы нездорового дебилизма... упс. Мне даже стало интеерсно в каких еще языках принято тип делать как часть идентификатора. https://softwareengineering.stackexchange.com/questions/39771/do-you-prefix-variable-names-with-an-abbreviation-of-the-variable-types-hungar pronounYou verbShould adverbNever verbUse adjectiveHungarian nounNotation, prepositionIt verbMakes collectivenounEverything adverbSo comparativeBloody adjectiveHard infinitiveTo verbReadСимпатично, да. И главное чуть помогает использовать идентификаторы как building blocks тому, кто совсем не хочет вникать в суть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 13:38 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
zemik69, Если задача что-то сравнить из разных таблиц, при этому их имена задаются как параметры на входе, то, возможно zemik69задачу можно решить одним динамическим SQL на основе например outer joinДерзай. Удачи. Если тебе нужно было одобрение незнакомых людей из интернетов, чтоб начать работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 13:40 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopтип делать как часть идентификатора. Не совсем так. Тип - это частный случай. Общий - т.н. "контракт" - который подсказывает, где и как может использоваться идентификатор. Появление идентификатора вне подразумеваемого контракта - ахтунг. ...пример с изменением типа данных атрибута - отличный пример, когда стандарты именования работают . По той простой причине, что смена типа данных требует рефакторинга. Потому смена типа данных требует смены именования атрибута, что приводит к автомагическому выявлению тех мест кода, которые зависят от. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:00 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, А если движок СУБД не поддерживает неявные преобразования, то подход меняется или тип по прежнему будет частью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:52 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
Коллеги, сколько будет стоить решить эту задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 16:49 |
|
||
|
Помогите решить задачу на pl/sql
|
|||
|---|---|---|---|
|
#18+
zemik69Коллеги, сколько будет стоить решить эту задачу? С этим следует идти в "работу", тут оффтопик. А так - на вскидку порядка 1-2чд уточнением постановки, кодированием и тестированием + 0.1..0.2 FTE на сопровождение в течение периода опытной эксплуатации (включает в себя разные ответы на глупые вопросы и задумчивый взгляд). Стоимость 1 чд зависит от квалификации и самомнения специалиста :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 17:02 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39709421&tid=1883401]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 506ms |

| 0 / 0 |
