0% found this document useful (0 votes)
19 views6 pages

Usp PPAS DTLS Json Data

The document outlines a PL/SQL procedure named 'usp_PPAS_DTLS_json_data' designed to process JSON data related to farmers and insert it into the 'tbl_api_ppas_data' and 'tbl_api_ppas_address' tables. It includes error handling for duplicate values and other exceptions, ensuring data integrity during the insertion process. The procedure also tracks the creation and update timestamps and manages active status for the records.

Uploaded by

Debasis Bhuyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views6 pages

Usp PPAS DTLS Json Data

The document outlines a PL/SQL procedure named 'usp_PPAS_DTLS_json_data' designed to process JSON data related to farmers and insert it into the 'tbl_api_ppas_data' and 'tbl_api_ppas_address' tables. It includes error handling for duplicate values and other exceptions, ensuring data integrity during the insertion process. The procedure also tracks the creation and update timestamps and manages active status for the records.

Uploaded by

Debasis Bhuyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

create or replace PROCEDURE usp_PPAS_DTLS_json_data (

p_created_by tbl_api_ppas_data.created_by%TYPE,
p_updated_dt tbl_api_ppas_data.updated_on%TYPE,
p_json IN CLOB,
p_out OUT VARCHAR2
) IS

l_json CLOB;
v_slno NUMBER;
v_count NUMBER;
l_count NUMBER;
-- p_json VARCHAR2(32767);
l_user_seq NUMBER;
l_user_slno NUMBER;
l_err_code VARCHAR2(100) := '';
l_err_msg VARCHAR2(500) := '';
l_trackstrattime TIMESTAMP(6) := systimestamp;
l_procedurename VARCHAR2(55) := $$plsql_unit;
BEGIN
/*=====================================================
Author : Debasis Bhuyan
Modified/Optimized : 27/JAN/2025 11:30:50
Purpose : PPAS DETAILS JSON DATA
=====================================================
*/
l_json := p_json;
SELECT COUNT(1) INTO l_count FROM tbl_api_ppas_data;
IF l_count=0 THEN
l_count:=1;
ELSE
SELECT MAX(NVL(FLAG,0))+1 INTO l_count FROM tbl_api_ppas_data;
END IF;

FOR TYPE_JSON_rec IN (
SELECT
--table 1
l_count,
FARMER_NAME,
FARMER_CODE,--farmer_id
--CULTIVATOR_NAME,
FATHER_NAME,
MOTHER_NAME,
SPOUSE_NAME,
FARMER_TYPE,
TOTAL_IRRIGATED_LAND,
TOTAL_NON_IRRIGATED_LAND,
AADHAAR_NO,
MOBILE_NO,
DOB,
GENDER,
SOCIAL_CATEGORY,
DISTRICT_NAME,
DIST_LGD_CODE,
BLOCK_ULB,
BLOCK_ULB_LGD_CODE,
GP_NAME,
GP_LGD_CODE,
VILLAGE_NAME,
VILLAGE_LGD_CODE,
HOUSE_PLOT_NO,
FAMILY_MEMBERS,
PIN_CODE,
BANK_NAME,
BRANCH_NAME,
BANK_ACCOUNT_NO,
IFSC_CODE,
STATE,
--table 2
-- FARMER_ID,
-- AADHAAR_NO,
KMS,
CROP,
KHATA_NO,
PLOT_NO,
BHULEKH_DISTRICT_ID,
BHULEK_DISTRICT,
BHULEK_RI_CIRCLE_ID,
BHULEK_RI_CIRCLE,
BHULEK_MOUZA,
BULEKH_MOUZA_ID,
PATTA_HOLDER_NAME_ODIA,
PATTA_HOLDER_NAME_ENG,
RELATION_WITH_FARMER,
LAND_SIZE_ACRE,
LAND_SHARE_ACRE

FROM JSON_TABLE(
l_json,
'$.ppasData[*]'
COLUMNS (
FARMER_NAME VARCHAR2(20) PATH '$.farmerName',
FARMER_CODE VARCHAR2(20) PATH '$.farmerCode',
FATHER_NAME VARCHAR2(100) PATH '$.fatherName',
MOTHER_NAME VARCHAR2(100) PATH '$.motherName',
SPOUSE_NAME VARCHAR2(100) PATH '$.spouseName',
FARMER_TYPE VARCHAR2(15) PATH '$.farmerType',
TOTAL_IRRIGATED_LAND VARCHAR2(10) PATH '$.totalIrrigatedLand',
TOTAL_NON_IRRIGATED_LAND VARCHAR2(10) PATH
'$.totalNonIrrigatedLand',
AADHAAR_NO VARCHAR2(14) PATH '$.aadhaarNo',
MOBILE_NO VARCHAR2(12) PATH '$.mobileNo',
DOB VARCHAR2(15) PATH '$.dob',
GENDER VARCHAR2(20) PATH '$.gender',
SOCIAL_CATEGORY VARCHAR2(20) PATH '$.socialCategory',
DISTRICT_NAME VARCHAR2(20) PATH '$.districtName',
DIST_LGD_CODE VARCHAR2(10) PATH '$.distLgdCode',
BLOCK_ULB VARCHAR2(20) PATH '$.blockUlb',
BLOCK_ULB_LGD_CODE VARCHAR2(10) PATH '$.blockUlbLgdCode',
GP_NAME VARCHAR2(20) PATH '$.gpName',
GP_LGD_CODE VARCHAR2(10) PATH '$.gpLgdCode',
VILLAGE_NAME VARCHAR2(20) PATH '$.villageName',
VILLAGE_LGD_CODE VARCHAR2(10) PATH '$.villageLgdCode',
HOUSE_PLOT_NO VARCHAR2(15) PATH '$.housePlotNo',
FAMILY_MEMBERS VARCHAR2(10) PATH '$.familyMembers',
PIN_CODE VARCHAR2(10) PATH '$.pinCode',
BANK_NAME VARCHAR2(20) PATH '$.bankName',
BRANCH_NAME VARCHAR2(20) PATH '$.branchName',
BANK_ACCOUNT_NO VARCHAR2(20) PATH '$.bankAccountNo',
IFSC_CODE VARCHAR2(20) PATH '$.ifscCode',
STATE VARCHAR2(20) PATH '$.state',

NESTED PATH '$.landDetails[*]'


COLUMNS (
KMS VARCHAR2(15) PATH '$.kms',
CROP VARCHAR2(20) PATH '$.crop',
KHATA_NO VARCHAR2(20) PATH '$.khataNo',
PLOT_NO VARCHAR2(20) PATH '$.plotNo',
BHULEKH_DISTRICT_ID VARCHAR2(20) PATH '$.bhulekhDistrictId',
BHULEK_DISTRICT VARCHAR2(20) PATH '$.bhulekhDistrict',
BHULEK_RI_CIRCLE_ID VARCHAR2(20) PATH '$.bhulekhRiCircleId',
BHULEK_RI_CIRCLE VARCHAR2(20) PATH '$.bhulekhRiCircle',
BHULEK_MOUZA VARCHAR2(20) PATH '$.bhulekhMouza',
BULEKH_MOUZA_ID VARCHAR2(20) PATH '$.bhulekhMouzaId',
PATTA_HOLDER_NAME_ODIA VARCHAR2(20) PATH '$.pattaHolderNameOdia',
PATTA_HOLDER_NAME_ENG VARCHAR2(20) PATH '$.pattaHolderNameEng',
RELATION_WITH_FARMER VARCHAR2(20) PATH '$.relationWithFarmer',
LAND_SIZE_ACRE VARCHAR2(20) PATH '$.landSizeAcre',
LAND_SHARE_ACRE VARCHAR2(20) PATH '$.landShareAcre'
)
)
)
) LOOP

BEGIN
INSERT INTO tbl_api_ppas_data (
FARMER_NAME,
FARMER_CODE,
CULTIVATOR_NAME,
FATHER_NAME,
MOTHER_NAME,
SPOUSE_NAME,
FARMER_TYPE,
TOTAL_IRRIGATED_LAND,
TOTAL_NON_IRRIGATED_LAND,
AADHAAR_NO,
MOBILE_NO,
DOB,
GENDER,
SOCIAL_CATEGORY,
DISTRICT_NAME,
DIST_LGD_CODE,
BLOCK_ULB,
BLOCK_ULB_LGD_CODE,
GP_NAME,
GP_LGD_CODE,
VILLAGE_NAME,
VILLAGE_LGD_CODE,
HOUSE_PLOT_NO,
FAMILY_MEMBERS,
PIN_CODE,
BANK_NAME,
BRANCH_NAME,
BANK_ACCOUNT_NO,
IFSC_CODE,
STATE,
ACTIVE_STATUS,
CREATED_BY,
CREATED_ON,
-- UPDATED_BY,
-- UPDATED_ON,
FLAG
)
SELECT
TYPE_JSON_rec.FARMER_NAME,
TYPE_JSON_rec.FARMER_CODE,
NULL,--TYPE_JSON_rec.CULTIVATOR_NAME,
TYPE_JSON_rec.FATHER_NAME,
TYPE_JSON_rec.MOTHER_NAME,
TYPE_JSON_rec.SPOUSE_NAME,
TYPE_JSON_rec.FARMER_TYPE,
TYPE_JSON_rec.TOTAL_IRRIGATED_LAND,
TYPE_JSON_rec.TOTAL_NON_IRRIGATED_LAND,
TYPE_JSON_rec.AADHAAR_NO,
TYPE_JSON_rec.MOBILE_NO,
TYPE_JSON_rec.DOB,
TYPE_JSON_rec.GENDER,
TYPE_JSON_rec.SOCIAL_CATEGORY,
TYPE_JSON_rec.DISTRICT_NAME,
TYPE_JSON_rec.DIST_LGD_CODE,
TYPE_JSON_rec.BLOCK_ULB,
TYPE_JSON_rec.BLOCK_ULB_LGD_CODE,
TYPE_JSON_rec.GP_NAME,
TYPE_JSON_rec.GP_LGD_CODE,
TYPE_JSON_rec.VILLAGE_NAME,
TYPE_JSON_rec.VILLAGE_LGD_CODE,
TYPE_JSON_rec.HOUSE_PLOT_NO,
TYPE_JSON_rec.FAMILY_MEMBERS,
TYPE_JSON_rec.PIN_CODE,
TYPE_JSON_rec.BANK_NAME,
TYPE_JSON_rec.BRANCH_NAME,
TYPE_JSON_rec.BANK_ACCOUNT_NO,
TYPE_JSON_rec.IFSC_CODE,
TYPE_JSON_rec.STATE,
'Y',
NVL(p_created_by,NULL),
SYSDATE,
l_count
FROM DUAL WHERE NOT EXISTS(
SELECT 1 FROM tbl_api_ppas_data WHERE FLAG=l_count AND
(TRIM(FARMER_CODE)=TRIM(TYPE_JSON_rec.FARMER_CODE)));
COMMIT;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;

BEGIN
INSERT INTO tbl_api_ppas_address (
FARMER_ID,
AADHAAR_NO,
KMS,
CROP,
KHATA_NO,
PLOT_NO,
BHULEKH_DISTRICT_ID,
BHULEK_DISTRICT,
BHULEK_RI_CIRCLE_ID,
BHULEK_RI_CIRCLE,
BHULEK_MOUZA,
BULEKH_MOUZA_ID,
PATTA_HOLDER_NAME_ODIA,
PATTA_HOLDER_NAME_ENG,
RELATION_WITH_FARMER,
LAND_SIZE_ACRE,
LAND_SHARE_ACRE,
CREATED_ON,
UPDATED_ON,
IS_ACTIVE,
CREATED_BY,
UPDATED_BY
)
VALUES (
TYPE_JSON_rec.FARMER_CODE,
TYPE_JSON_rec.AADHAAR_NO,
TYPE_JSON_rec.KMS,
TYPE_JSON_rec.CROP,
TYPE_JSON_rec.KHATA_NO,
TYPE_JSON_rec.PLOT_NO,
TYPE_JSON_rec.BHULEKH_DISTRICT_ID,
TYPE_JSON_rec.BHULEK_DISTRICT,
TYPE_JSON_rec.BHULEK_RI_CIRCLE_ID,
TYPE_JSON_rec.BHULEK_RI_CIRCLE,
TYPE_JSON_rec.BHULEK_MOUZA,
TYPE_JSON_rec.BULEKH_MOUZA_ID,
TYPE_JSON_rec.PATTA_HOLDER_NAME_ODIA,
TYPE_JSON_rec.PATTA_HOLDER_NAME_ENG,
TYPE_JSON_rec.RELATION_WITH_FARMER,
TYPE_JSON_rec.LAND_SIZE_ACRE,
TYPE_JSON_rec.LAND_SHARE_ACRE,
SYSDATE,
NULL,
'Y',
NVL(p_created_by,NULL),
NULL
);
COMMIT;

EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;

-- DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);

BEGIN
SELECT COUNT(1) INTO v_count
FROM tbl_api_ppas_address a WHERE a.FARMER_ID=TYPE_JSON_rec.FARMER_CODE;
IF v_count>1 THEN
UPDATE tbl_api_ppas_address a
SET a.IS_ACTIVE= 'N', a.updated_on=SYSDATE,
a.updated_by=nvl(p_created_by,a.updated_by)
WHERE a.CREATED_ON IN(
SELECT a.CREATED_ON FROM tbl_api_ppas_address a
WHERE a.CREATED_ON<(SELECT MAX(b.CREATED_ON) FROM tbl_api_ppas_address b WHERE
upper(trim(a.FARMER_ID))=upper(trim(b.FARMER_ID)))
AND (a.IS_ACTIVE= 'Y'
AND UPPER(TRIM(FARMER_ID))=UPPER(TRIM(TYPE_JSON_rec.FARMER_CODE))));
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
WHEN OTHERS THEN
ROLLBACK;
END;

-- DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
END LOOP;
COMMIT;
p_out := 'SUCCESS';

DBMS_OUTPUT.PUT_LINE('$deb#333333333333');
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
l_err_code := sqlcode;
l_err_msg := substr(sqlerrm, 1, 200)|| ' '||l_procedurename||' '||
l_trackstrattime;
p_out := l_err_msg;
dbms_output.put_line(l_err_msg);
END;

You might also like