---
title: "SQL-022: Retrieve user access group row"
summary: Retrieves a single persisted access-group membership row with type-access-group and code-table joins.
status: draft
owner: <owner>
last_reviewed: 2026-07-24
library: SAIF.Business.External.Users
reference_type: package
---

# SQL-022: Retrieve user access group row

Retrieves a single persisted `EXT_USER_ACCESS_GROUP` row with all code-table and type-access-group joins, including optional globalized description via culture code.

## Classification

| Field | Value |
| --- | --- |
| **SQL ID** | SQL-022 |
| **Operation type** | Read |
| **Execution method** | Inline SQL |
| **Database** | Oracle |
| **Schema** | [unqualified]** |
| **Command type** | Text |
| **Business object** | `clsUserAccessGroup` |
| **Criteria property** | `RetrieveSQL` |
| **Lifecycle method** | `BeforeRetrieve` |

## Parameters

| Parameter | Direction | Type | Max length | Description |
| --- | --- | --- | --- | --- |
| `:CultureCode` | Input | String | 5 | Culture code for globalized description lookup. |
| `:UserAccessGroupID` | Input | Decimal | N/A | `EXT_USER_ACCESS_GROUP_SEQ_NUM` — primary key. |

## Tables

| Table | Access | Columns used |
| --- | --- | --- |
| [EXT_USER_ACCESS_GROUP](../database-tables.md#ext_user_access_group) | SELECT | All EXT_USER_ACCESS_GROUP columns |
| [EXT_USER_ACCESS_GROUP_CODE](../database-tables.md#ext_user_access_group_code) | JOIN | `CODE`, `CODE_DESCR` |
| [EXT_USER_TYPE](../database-tables.md#ext_user_type) | JOIN | `EXT_USER_TYPE_SEQ_NUM`, `EXT_USER_TYPE_CODE` |
| [EXT_USER_TYPE_ACCESS_GROUP](../database-tables.md#ext_user_type_access_group) | JOIN | Access and control flags |
| [EXT_USER_ACCESS_GROUP_GCODE](../database-tables.md#ext_user_access_group_gcode) | LEFT OUTER JOIN | `CODE`, `CULTURE_CODE`, `CODE_DESCR` |

## Sample SQL

```sql
SELECT
    g.EXT_USER_ACCESS_GROUP_SEQ_NUM AS UserAccessGroupID,
    g.EXT_USER_TYPE_SEQ_NUM AS UserTypeID,
    t.EXT_USER_TYPE_CODE AS UserTypeCode,
    g.EXT_USER_ACCESS_GROUP_CODE AS AccessGroupCode,
    agc.CODE_DESCR AS AccessGroupDescription,
    g.EXPIRATION_DATE AS ExpirationDate,
    g.DEFAULT_ACCESS_FLAG AS IsDefaultAccess,
    tag.ADMIN_ACCESS_FLAG AS CanAdminAccess,
    tag.STEWARD_ACCESS_FLAG AS CanStewardAccess,
    tag.SELF_REG_ACCESS_FLAG AS CanSelfRegistrationAccess,
    tag.SYSTEM_CONTROLLED_FLAG AS IsControlledBySystem,
    tag.DEFAULT_STATUS_FLAG AS DefaultStatus,
    tag.SORT_ORDER_NUM AS SortOrder,
    g.CREATE_USER AS CreateUser,
    g.CREATE_DATE AS CreateDate,
    g.UPDATE_USER AS UpdateUser,
    g.UPDATE_DATE AS UpdateDate,
    g.UPDATE_NUM AS UpdateNum,
    '{0}' AS AccessType
FROM EXT_USER_ACCESS_GROUP g
JOIN ext_user_access_group_code agc
    ON agc.code = g.ext_user_access_group_code
JOIN ext_user_type t
    ON t.ext_user_type_seq_num = g.ext_user_type_seq_num
JOIN ext_user_type_access_group tag
    ON tag.ext_user_type_code = t.ext_user_type_code
    AND tag.ext_user_access_group_code = g.ext_user_access_group_code
LEFT OUTER JOIN ext_user_access_group_gcode aggc
    ON (agc.code = aggc.code AND upper(AGGC.CULTURE_CODE) = :CultureCode)
WHERE g.EXT_USER_ACCESS_GROUP_SEQ_NUM = :UserAccessGroupID
```

## Operations and processes
- [User access group management](../operations/user-access-group-management.md)

> **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.External.Users\clsUserAccessGroup.vb`
