У меня есть требование, как показано ниже.У меня есть таблица с 2 столбцами, (contract_id, line_num)
create table tx (contract_id number,line_num number);
У меня есть данные типа
contract_id || line_num
----------- ---------
1 || 1
1 || null
1 || null
2 || 1
2 || null
2 || null
3 || 1
3 || null
Я должен написать блок plsql, сначала я должен получить max(line_num)
для каждого contract_id, а затем обновите следующий порядковый номер для каждого contract_id, где всегда есть ноль в столбце line_num для каждого contract_id, используя курсор для цикла.
Я должен получить, как показано ниже
contract_id || line_num
----------- ---------
1 || 1
1 || 2
1 || 3
2 || 1
2 || 2
2 || 3
3 || 1
3 || 2
Можете ли вы помочь мне с этим ...
DECLARE
var1 NUMBER := 0;
BEGIN
SELECT MAX (gocpd.column46)
INTO var1
FROM gecm_okc_con_part_details gocpd, okc_rep_contracts_all orca
WHERE gocpd.contract_id = orca.contract_id
AND orca.attribute12 = 'GE-Power' --AND GOCPD.COLUMN46 = NULL AND GOCPD.CONTRACT_ID = 525215; END
;
BEGIN
UPDATE GECM_OKC_CON_PART_DETAILS GOCPD
SET GOCPD.COLUMN46 = var1 + 1
FROM okc_rep_contracts_all orca
WHERE gocpd.contract_id = orca.contract_id
AND orca.attribute12 = 'GE-Power'
AND gocpd.column46 = NULL
AND gocpd.contract_id = 525215;
COMMIT;
END;
END;