I have written a below block of code
#!/bin/bash
TABLE_NAME="${1}"
COL_NAME="${2}"
FIELD_VALUES_1SQ_FUNC()
{
FIELD_VALUES_1SQS=`sqlplus -s sab/admin@TERM << EOF
SET FEEDBACK OFF;
SET HEADING OFF;
Select TESTING.FIELD_VALUES_TEMP_1SQ.NEXTVAL from dual;
exit;
EOF`
FIELD_VALUES_1SQ=`echo ${FIELD_VALUES_1SQS} | tr -d ' '`
}
RT_SEQ_CHECK_FUNC()
{
RT_SEQ_CHECKS=`sqlplus -s sab/admin@TERM << EOF
SET FEEDBACK OFF;
SET HEADING OFF;
Select * from TESTING.FIELD_VALUES where FIELD_ROW_ID='${1}' and TF_ID='${2}';
exit;
EOF`
RT_SEQ_CHECK=`echo ${RT_SEQ_CHECKS} | tr -d ' '`
}
RT_FIELD_IDS_FUNC()
{
RT_FIELD_IDS=`sqlplus -s sab/admin@TERM << EOF
SET HEADING OFF;
SET FEEDBACK OFF;
select max(TF_ID) from TESTING.TABLE_FIELD where field_id in(select field_id from TESTING.FIELD_DOMAIN where name='${2}') and table_id in (select table_id from TESTING.TABLE where name='${1}');
EXIT;
EOF`
RT_FIELD_ID=`echo ${RT_FIELD_IDS} | tr -d ' '`
}
FIELD_VALUES_1SQ_FUNC
RT_FIELD_IDS_FUNC ${TABLE_NAME} ${COL_NAME}
RT_SEQ_CHECK_FUNC ${FIELD_VALUES_1SQ} ${RT_FIELD_ID}
if [ -z "${RT_SEQ_CHECK}" ]
then
echo "Sequence values doesn't exist |--${RT_SEQ_CHECK}--|"
else
echo "SEQUNCE VAlue exists |--${RT_SEQ_CHECK}--|"
fi
echo "TF_ID=${FIELD_VALUES_1SQ}"
echo "FIELD_ROW_ID=${RT_FIELD_ID}"
exit $?
In my script, at first I am calling the function FIELD_VALUES_1SQ_FUNC to generate a sequence number.
Second, I am calling RT_FIELD_IDS_FUNC ${TABLE_NAME} ${COL_NAME} where it will get some value.
Third, the function RT_SEQ_CHECK_FUNC ${FIELD_VALUES_1SQ} ${RT_FIELD_ID} is called, where it checks if the value is there in database. If the value is there, then I should call the FIELD_VALUES_1SQ_FUNC() again to generate a new sequence value and check it with RT_SEQ_CHECK_FUNC ${FIELD_VALUES_1SQ} ${RT_FIELD_ID} function unless the value is not found for that select in FIELD_VALUES_1SQ_FUNC() function.
Any ideas on how this can be achieved!