Skip to content

SQL-037: Create Location

This ORM statement performs a create operation on Location via CreateDebtor, SaveDebtor, executed from Services/SAIF.Services/Collections/CollectionsService.cs (L576), Services/SAIF.Services/Collections/CollectionsService.cs (L665).

Classification

Field Value
SQL ID SQL-037
Operation type Create
Execution method ORM (IRepository.Add)
Database Oracle
Schema [unqualified]**
Command type N/A (ORM-generated)
Business object Location
Criteria property N/A — ORM
Lifecycle method CreateDebtor, SaveDebtor

Parameters

Parameter Direction Type Max length Description
:Id Input long N/A Identifier from LOCATION_SEQ.NEXTVAL
:PolicyNum Input long? N/A
:BusId Input long? N/A
:AgentNum Input long? N/A
:ParentId Input long? N/A
:EffectiveDate Input DateTime N/A
:ExpirationDate Input DateTime? N/A
:LocationCode Input string N/A
:LocationName Input string N/A
:AddressLine1 Input string N/A
:AddressLine2 Input string N/A
:City Input string N/A
:Country Input string N/A
:PhoneNumber Input string N/A
:PhoneExtension Input string N/A
:Fax Input string N/A
:State Input string N/A
:Zip Input string N/A
:Zip4 Input string N/A
:SicCode Input string N/A
:ProviderNum Input long? N/A
:CreateUser Input string N/A
:CreateDate Input DateTime N/A
:UpdateUser Input string N/A
:UpdateDate Input DateTime? N/A
:UspsBarcode Input string N/A
:EmailAddress Input string N/A
:EmployeeCount Input long? N/A
:AddressLine3 Input string N/A
:IsPrimaryLocation Input bool N/A Bound as 'Y'/'N' (YesNoType)
:CellPhone Input string N/A

Tables

Table Access Columns used
LOCATION INSERT, UPDATE LOC_SEQ_NUM, POLICY_NUM, BUS_SEQ_NUM, AGENT_NUM, PARENT_LOC_SEQ_NUM, LOC_EFF_DATE, LOC_EXP_DATE, LOCATION_CODE, LOCATION_NAME, LOC_ADDR1, LOC_ADDR2, LOC_CITY, LOC_COUNTRY, LOC_PHONE, LOC_PHONE_EXT, LOC_FAX, LOC_STATE, LOC_ZIP, LOC_ZIP4, SIC_CODE, PROVIDER_NUM, CREATE_USER, CREATE_DATE, UPDATE_USER, UPDATE_DATE, USPS_BARCODE, EMAIL_ADDR, EMPLOYEE_COUNT, LOC_ADDR3, PRIMARY_LOCATION_FLAG, CELL_PHONE (identifier from sequence LOCATION_SEQ.NEXTVAL)

LINQ statement

Source: Services/SAIF.Services/Collections/CollectionsService.cs:576, Services/SAIF.Services/Collections/CollectionsService.cs:665.

// Services/SAIF.Services/Collections/CollectionsService.cs:576
UnitOfWork.GetRepository<LocationDataModel.Location>().Add(locData);

// Services/SAIF.Services/Collections/CollectionsService.cs:665
UnitOfWork.GetRepository<LocationDataModel.Location>().Add(locData);

Sample SQL

Inferred SQL: This SQL was inferred from the LINQ statement above and the NHibernate mappings. It is not concrete SQL from source code; NHibernate generates the executed statement at runtime, so aliases, column order, join syntax, and bind-parameter names may differ.

-- Inferred from LINQ (NHibernate mapping translation); not concrete SQL
-- New location (CreateDebtor :576, and SaveDebtor :665 when debtorModel.LocID is not set)
SELECT LOCATION_SEQ.NEXTVAL
FROM DUAL

INSERT INTO LOCATION (
  LOC_SEQ_NUM,
  POLICY_NUM,
  BUS_SEQ_NUM,
  AGENT_NUM,
  PARENT_LOC_SEQ_NUM,
  LOC_EFF_DATE,
  LOC_EXP_DATE,
  LOCATION_CODE,
  LOCATION_NAME,
  LOC_ADDR1,
  LOC_ADDR2,
  LOC_CITY,
  LOC_COUNTRY,
  LOC_PHONE,
  LOC_PHONE_EXT,
  LOC_FAX,
  LOC_STATE,
  LOC_ZIP,
  LOC_ZIP4,
  SIC_CODE,
  PROVIDER_NUM,
  CREATE_USER,
  CREATE_DATE,
  UPDATE_USER,
  UPDATE_DATE,
  USPS_BARCODE,
  EMAIL_ADDR,
  EMPLOYEE_COUNT,
  LOC_ADDR3,
  PRIMARY_LOCATION_FLAG,
  CELL_PHONE)
VALUES (
  :Id,
  :PolicyNum,
  :BusId,
  :AgentNum,
  :ParentId,
  :EffectiveDate,
  :ExpirationDate,
  :LocationCode,
  :LocationName,
  :AddressLine1,
  :AddressLine2,
  :City,
  :Country,
  :PhoneNumber,
  :PhoneExtension,
  :Fax,
  :State,
  :Zip,
  :Zip4,
  :SicCode,
  :ProviderNum,
  :CreateUser,
  :CreateDate,
  :UpdateUser,
  :UpdateDate,
  :UspsBarcode,
  :EmailAddress,
  :EmployeeCount,
  :AddressLine3,
  :IsPrimaryLocation,
  :CellPhone)

-- Existing location (SaveDebtor :665 when debtorModel.LocID > 0; locData loaded by GetDebtorLocation at line 652)
UPDATE LOCATION
SET
  POLICY_NUM = :PolicyNum,
  BUS_SEQ_NUM = :BusId,
  AGENT_NUM = :AgentNum,
  PARENT_LOC_SEQ_NUM = :ParentId,
  LOC_EFF_DATE = :EffectiveDate,
  LOC_EXP_DATE = :ExpirationDate,
  LOCATION_CODE = :LocationCode,
  LOCATION_NAME = :LocationName,
  LOC_ADDR1 = :AddressLine1,
  LOC_ADDR2 = :AddressLine2,
  LOC_CITY = :City,
  LOC_COUNTRY = :Country,
  LOC_PHONE = :PhoneNumber,
  LOC_PHONE_EXT = :PhoneExtension,
  LOC_FAX = :Fax,
  LOC_STATE = :State,
  LOC_ZIP = :Zip,
  LOC_ZIP4 = :Zip4,
  SIC_CODE = :SicCode,
  PROVIDER_NUM = :ProviderNum,
  CREATE_USER = :CreateUser,
  CREATE_DATE = :CreateDate,
  UPDATE_USER = :UpdateUser,
  UPDATE_DATE = :UpdateDate,
  USPS_BARCODE = :UspsBarcode,
  EMAIL_ADDR = :EmailAddress,
  EMPLOYEE_COUNT = :EmployeeCount,
  LOC_ADDR3 = :AddressLine3,
  PRIMARY_LOCATION_FLAG = :IsPrimaryLocation,
  CELL_PHONE = :CellPhone
WHERE LOC_SEQ_NUM = :Id

Translation notes: - :Id is the value fetched from sequence LOCATION_SEQ (GeneratedBy.Native("LOCATION_SEQ")) before the INSERT; NHibernate assigns it to Location.Id. - :IsPrimaryLocation are bound as 'Y' / 'N' (YesNoType). - Excluded from the INSERT column list by mapping flags: LOC_COUNTY, LOC_STATE (County reference, Not.Insert; LOC_STATE is still written through its own Map). - SaveDebtor (:665) demonstrably handles both cases: locData is a new Location unless debtorModel.LocID > 0, in which case it is loaded by GetDebtorLocation (lines 649-653). Both the INSERT and the SaveOrUpdate UPDATE are therefore shown, each labelled. LocationMap declares no Version, so the UPDATE has no version predicate. - GetDebtorLocation (line 652) is a separate SELECT, not part of this SQL ID.

Operations and processes

Note: Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • Services/SAIF.Services/Collections/CollectionsService.cs (L576, L665)