В настоящее время я пытаюсь обновить SQR для проверки повторяющихся значений по столбцам внутри данной записи. Мы разрешаем вводить дубликаты в таблицу, но мы хотим, чтобы флаг ошибки проверялся, когда он прерывает следующую программу.Проверка дубликатов в SQR
ID - 1 Var1 - 3809 Var2 - 3809
ID - 2 Var1 - NULL Var2 - NULL
ID - 3 Var1 - 5204 Var2 - 3809
В этом случае идентификатор 1 будет иметь флаг ошибки, а два других - нет. Я не могу просто проверять значения, поскольку мне нужно будет проверить 12 разных столбцов. Любая помощь приветствуется.
Спасибо! Dan
Я попробовал этот код, который компилируется, но не записывает дубликаты
begin-procedure check-duplicates
create-array name=SchlDuplicates
size=15
Field=Val:Char
BEGIN-SQL
SELECT
MICA_SCH1_CEEBCD
MICA_SCH2_CEEBCD
MICA_SCH3_CEEBCD
MICA_SCH4_CEEBCD
MICA_COL1_CEEBCD
MICA_COL2_CEEBCD
MICA_COL3_CEEBCD
MICA_TRSCH1_CEEBCD
MICA_TRCOL1_CEEBCD
MICA_TRCOL2_CEEBCD
MICA_TRCOL3_CEEBCD
MICA_TSSCH1_CEEBCD
MICA_TSSCH2_CEEBCD
MICA_TSSCH3_CEEBCD
put MICA_SCH1_CEEBCD into SchlDuplicates(1) Val
put MICA_SCH2_CEEBCD into SchlDuplicates(2) Val
put MICA_SCH3_CEEBCD into SchlDuplicates(3) Val
put MICA_SCH4_CEEBCD into SchlDuplicates(4) Val
put MICA_COL1_CEEBCD into SchlDuplicates(5) Val
put MICA_COL2_CEEBCD into SchlDuplicates(6) Val
put MICA_COL3_CEEBCD into SchlDuplicates(7) Val
put MICA_TRSCH1_CEEBCD into SchlDuplicates(8) Val
put MICA_TRCOL1_CEEBCD into SchlDuplicates(9) Val
put MICA_TRCOL2_CEEBCD into SchlDuplicates(10) Val
put MICA_TRCOL3_CEEBCD into SchlDuplicates(11) Val
put MICA_TSSCH1_CEEBCD into SchlDuplicates(12) Val
put MICA_TSSCH2_CEEBCD into SchlDuplicates(13) Val
put MICA_TSSCH3_CEEBCD into SchlDuplicates(14) Val
Let #I = 1
Let $DupFound = 'N'
While #I <= 13 and $DupFound = 'N'
Let #J = #I + 1
While #J <= 14
Get $Val1 from SchlDuplicates(#I) Val
Get $Val2 from SchlDuplicates(#J) Val
If $Val1 = $Val2
let $DupFound = 'Y'
do Insert-Error
End-If
add 1 to #J
End-While
Add 1 to #I
End-While
FROM PS_MICA_STSCHL_STG
WHERE MICA_COMMON_APP_ID = $Application_ID || $Val1
END-SQL
End-Procedure
Begin-Procedure Insert-Error
If $DupFound = 'Y'
Let $Error_table = 'Duplicate Schools'
End-If
BEGIN-SQL
INSERT INTO PS_MICA_ERROR_LOG
VALUES($Application_ID,
$App_export_dt,
$Error_table,
'')
END-SQL
end-procedure
вы видели мой ответ? – cardmagik
@cardmagik - Я попытался запустить код, который я обновил, как указано выше, на основе вашего примера. Он работает с «Успехом», но я не получаю дополнение к таблице журнала ошибок, как хотелось бы. Я должен также упомянуть, что мой разработчик находится за пределами страны, поэтому я определенно новичок, когда речь заходит о SQR. –
DupFound сбрасывается после каждой записи - при проверке дублирования и записи ошибки вы находитесь за пределами данных - в основном, только проверка последней записи в наборе. То, что вы должны сделать, это вызвать процедуру. Я могу добавить код, если вам нравится ниже, но он должен быть через несколько часов – cardmagik