---
title: "SQL-009: clsBankAccount insert"
summary: Inserts a new bank account record into BANK_ACCOUNT.
status: draft
owner: SAIF
last_reviewed: 2026-07-24
library: SAIF.Business.Payment.EFT
reference_type: package
---

# SQL-009: clsBankAccount insert

Inserts a new bank account record into the `BANK_ACCOUNT` table with all routing, account, type, status, owner, and audit fields. Requires `RowsAffected = 1` on success.

## Classification

| Field | Value |
| --- | --- |
| **SQL ID** | SQL-009 |
| **Operation type** | Create |
| **Execution method** | Inline SQL |
| **Database** | Oracle* |
| **Schema** | [unqualified]** |
| **Command type** | Text |
| **Business object** | `clsBankAccount` |
| **Criteria property** | `InsertSQL` |
| **Lifecycle method** | `BeforeInsert / AfterInsert` |

## Parameters

| Parameter | Direction | Type | Max length | Description |
| --- | --- | --- | --- | --- |
| `:BankAccountDataSourceCode` | Input | String | 5 | Bank account data source code |
| `:BankAccountHolderName` | Input | String | 50 | Account holder name |
| `:BankAccountNickName` | Input | String | 50 | Account nickname |
| `:BankAccountNum` | Input | String | 255 | Account number |
| `:BankAccountOwnerName` | Input | String | 20 | Account owner name |
| `:BankAccountID` | Input | Decimal | N/A | Sequence number (from SQL-001) |
| `:BankAccountStatusCode` | Input | String | 5 | Account status code |
| `:BankAccountTypeCode` | Input | String | 5 | Account type code |
| `:BankName` | Input | String | 50 | Bank name |
| `:BankRoutingNum` | Input | String | 255 | Routing number |
| `:BusinessConsumerCode` | Input | String | 5 | Business/consumer classification |
| `:CreateDate` | Input | Date | N/A | Creation date |
| `:CreateIPAddr` | Input | String | 30 | Creation IP address |
| `:CreateUser` | Input | String | 30 | Creating user |
| `:HistoricalAuthorizationFlag` | Input | String | 1 | Historical authorization flag |
| `:PaymentReturnReasonCode` | Input | String | 5 | Last return reason code |
| `:UpdateDate` | Input | Date | N/A | Last update date |
| `:UpdateIPAddr` | Input | String | 30 | Last update IP address |
| `:UpdateUser` | Input | String | 30 | Last update user |

## Tables

| Table | Access | Columns used |
| --- | --- | --- |
| [BANK_ACCOUNT](../database-tables.md#bank_account) | INSERT | BANK_ACCOUNT_SEQ_NUM, BANK_ACCOUNT_DATA_SOURCE_CODE, BANK_ACCOUNT_HOLDER_NAME, BANK_ACCOUNT_NICK_NAME, BANK_ACCOUNT_NUM, BANK_ACCOUNT_OWNER_NAME, BANK_ACCOUNT_STATUS_CODE, BANK_ACCOUNT_TYPE_CODE, BANK_NAME, BANK_ROUTING_NUM, BUSINESS_CONSUMER_CODE, HISTORICAL_AUTHORIZATION_FLAG, PAYMENT_RETURN_REASON_CODE, CREATE_DATE, CREATE_IP_ADDR, CREATE_USER, UPDATE_DATE, UPDATE_IP_ADDR, UPDATE_USER |

## Sample SQL

```sql
Insert into BANK_ACCOUNT (
  BANK_ACCOUNT_DATA_SOURCE_CODE, BANK_ACCOUNT_HOLDER_NAME, BANK_ACCOUNT_NICK_NAME,
  BANK_ACCOUNT_NUM, BANK_ACCOUNT_OWNER_NAME, BANK_ACCOUNT_SEQ_NUM,
  BANK_ACCOUNT_STATUS_CODE, BANK_ACCOUNT_TYPE_CODE, BANK_NAME, BANK_ROUTING_NUM,
  BUSINESS_CONSUMER_CODE, CREATE_DATE, CREATE_IP_ADDR, CREATE_USER,
  HISTORICAL_AUTHORIZATION_FLAG, PAYMENT_RETURN_REASON_CODE,
  UPDATE_DATE, UPDATE_IP_ADDR, UPDATE_USER
)
Values (
  :BankAccountDataSourceCode, :BankAccountHolderName, :BankAccountNickName,
  :BankAccountNum, :BankAccountOwnerName, :BankAccountID,
  :BankAccountStatusCode, :BankAccountTypeCode, :BankName, :BankRoutingNum,
  :BusinessConsumerCode, :CreateDate, :CreateIPAddr, :CreateUser,
  :HistoricalAuthorizationFlag, :PaymentReturnReasonCode,
  :UpdateDate, :UpdateIPAddr, :UpdateUser
)
```

Row-count check: `If RowsAffected <> 1 Then Me.AddErrorMessage("InsertError", "Insert Failed") End If`

## Operations and processes
- [Bank account management](../operations/bank-account-management.md)*

## Business rules
- [BR-EFT-05: Insert/update operations require exactly one affected row](../business-rules.md#br-eft-05-insertupdate-operations-require-exactly-one-affected-row)*

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `Business\SAIF.Business.Payment.EFT\clsBankAccount.vb`
