Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
CREATE PROCEDURE "pears"."NetCandidateProfileSetBank"( IN "pWebUserID" CHAR(20),IN "ppersonid" CHAR(20),IN "pni" CHAR(10) DEFAULT 'NOT-SET',IN "pBankName" CHAR(30) DEFAULT 'NOT-SET',IN "pBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "pBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "pBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "pUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET',IN "poldni" CHAR(10) DEFAULT 'NOT-SET',IN "poldBankName" CHAR(30) DEFAULT 'NOT-SET',IN "poldBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "poldBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "poldBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "poldUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET' ) RESULT( "pResult" CHAR(250) ) BEGIN DECLARE "ssql" CHAR(255); -- sql string DECLARE "errmsg" CHAR(150); SET "ssql" = ''; -- check that the record is owned by the logged in user IF NOT "ppersonid" = any(SELECT "personid" FROM "iqxnetuserlink" WHERE "iqxnetuserid" = "pwebuserid") THEN SELECT '99:~Permission denied'; RETURN END IF; IF "isnull"("pni",'') <> "isnull"("poldni",'') THEN -- National insurance number goes into person table. others go into pay_Employee table SET "pni" = "ucase"("pni"); SET "errmsg" = "validateninumber"("pni"); IF "trim"("isnull"("errmsg",'')) <> '' THEN SELECT '121:~'+"errmsg"; RETURN END IF; SET "ssql" = "ssql"+'ni=pni' END IF; IF "ssql" <> '' THEN EXECUTE IMMEDIATE 'update person set '+"ssql"+' where personid=ppersonid' END IF; -- check if record already present in Pay_Employee. If no, insert stub record first IF NOT EXISTS(SELECT * FROM "Pay_Employee" WHERE "Personid" = "ppersonid") THEN -- insert stub INSERT INTO "pay_employee"( "personid" ) VALUES( "ppersonid" ) END IF; SET "ssql" = ''; -- clear for second update to Pay_Employee table -- update IF "left"("pBankAcNo",1) <> '*' THEN IF "isnull"("pBankAcNo",'') <> "isnull"("poldBankAcNo",'') THEN SET "ssql" = "ssql"+',BankAcNo=pBankAcNo' END IF END IF; IF "isnull"("pBankName",'') <> "isnull"("poldBankName",'') THEN SET "ssql" = "ssql"+',BankName=pBankName' END IF; IF "isnull"("pBankSortCode",'') <> "isnull"("poldBankSortCode",'') THEN SET "ssql" = "ssql"+',BankSortCode=pBankSortCode' END IF; IF "isnull"("pBankAcName",'') <> "isnull"("poldBankAcName",'') THEN SET "ssql" = "ssql"+',BankAcName=pBankAcName' END IF; IF "isnull"("pUniqueTaxReference",'') <> "isnull"("poldUniqueTaxReference",'') THEN SET "ssql" = "ssql"+',UniqueTaxReference=pUniqueTaxReference' END IF; IF "ssql" <> '' THEN EXECUTE IMMEDIATE 'update Pay_Employee set '+"stuff"("ssql",1,1,'')+' where personid=ppersonid' END IF; CALL "personrecordupdated"("ppersonid"); SELECT '0:~Success' END /* DOC 2018-05-07 PC IW-503 hide bank account number except for last two digits 2018-07-24 PC include improved error handler */ GO COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetCandidateProfileSetBank" IS {CREATE PROCEDURE pears."NetCandidateProfileSetBank"( IN "pWebUserID" CHAR(20),IN "ppersonid" CHAR(20),IN "pni" CHAR(10) DEFAULT 'NOT-SET',IN "pBankName" CHAR(30) DEFAULT 'NOT-SET',IN "pBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "pBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "pBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "pUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET',IN "poldni" CHAR(10) DEFAULT 'NOT-SET',IN "poldBankName" CHAR(30) DEFAULT 'NOT-SET',IN "poldBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "poldBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "poldBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "poldUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET' ) RESULT( "pResult" CHAR(250) ) BEGIN DECLARE "ssql" CHAR(255); -- sql string DECLARE "errmsg" CHAR(150); SET "ssql" = ''; -- check that the record is owned by the logged in user IF NOT "ppersonid" = any(SELECT "personid" FROM "iqxnetuserlink" WHERE "iqxnetuserid" = "pwebuserid") THEN SELECT '99:~Permission denied'; RETURN END IF; IF "isnull"("pni",'') <> "isnull"("poldni",'') THEN -- National insurance number goes into person table. others go into pay_Employee table SET "pni" = "ucase"("pni"); SET "errmsg" = "validateninumber"("pni"); IF "trim"("isnull"("errmsg",'')) <> '' THEN SELECT '121:~'+"errmsg"; RETURN END IF; SET "ssql" = "ssql"+'ni=pni' END IF; IF "ssql" <> '' THEN EXECUTE IMMEDIATE 'update person set '+"ssql"+' where personid=ppersonid' END IF; -- check if record already present in Pay_Employee. If no, insert stub record first IF NOT EXISTS(SELECT * FROM "Pay_Employee" WHERE "Personid" = "ppersonid") THEN -- insert stub INSERT INTO "pay_employee"( "personid" ) VALUES( "ppersonid" ) END IF; SET "ssql" = ''; -- clear for second update to Pay_Employee table -- update IF LEFT(pBankAcNo,1)!='*' THEN IF "isnull"("pBankAcNo",'') <> "isnull"("poldBankAcNo",'') THEN SET "ssql" = "ssql"+',BankAcNo=pBankAcNo' END IF; END IF; IF "isnull"("pBankName",'') <> "isnull"("poldBankName",'') THEN SET "ssql" = "ssql"+',BankName=pBankName' END IF; IF "isnull"("pBankSortCode",'') <> "isnull"("poldBankSortCode",'') THEN SET "ssql" = "ssql"+',BankSortCode=pBankSortCode' END IF; IF "isnull"("pBankAcName",'') <> "isnull"("poldBankAcName",'') THEN SET "ssql" = "ssql"+',BankAcName=pBankAcName' END IF; IF "isnull"("pUniqueTaxReference",'') <> "isnull"("poldUniqueTaxReference",'') THEN SET "ssql" = "ssql"+',UniqueTaxReference=pUniqueTaxReference' END IF; IF "ssql" <> '' THEN EXECUTE IMMEDIATE 'update Pay_Employee set '+"stuff"("ssql",1,1,'')+' where personid=ppersonid' END IF; CALL "personrecordupdated"("ppersonid"); SELECT '0:~Success' END /* DOC 2018-05-07 PC IW-503 hide bank account number except for last two digits 2018-07-24 PC include improved error handler */ }