---
title: "SQL-003: Retrieve all preferences for a user"
summary: Selects every USER_PREFERENCE row belonging to a given user.
status: draft
owner: <owner>
last_reviewed: 2026-07-23
library: SAIF.Framework.Preferences
reference_type: package
---

# SQL-003: Retrieve all preferences for a user

This SELECT retrieves every stored preference row for a given `USER_ID`, across all applications and pages. It backs `PreferenceData.GetPreferencesForUser`, which builds one `Preference` object per returned row.

## Classification

| Field | Value |
| --- | --- |
| **SQL ID** | SQL-003 |
| **Operation type** | Read |
| **Execution method** | Inline SQL (`SqlHelper.ResultSetQuery.Execute`) |
| **Database** | Oracle |
| **Schema** | `[unqualified]**` |
| **Command type** | Text |
| **Business object** | `PreferenceData` |
| **Criteria property** | n/a (no `IBusinessCriteria`) |
| **Lifecycle method** | `GetPreferencesForUser` |

## Parameters

| Parameter | Direction | Type | Max length | Description |
| --- | --- | --- | --- | --- |
| `:userid` | Input | string (`SqlHelper.NewParm`) | 40 | Lower-cased user ID; retrieves all preference rows for this user across all apps/pages. |

## Tables

| Table | Access | Columns used |
| --- | --- | --- |
| [USER_PREFERENCE](../database-tables.md#user_preference) | SELECT | `USER_PREFERENCE_SEQ_NUM`, `USER_ID`, `APP_NAME`, `PAGE_NAME`, `PREFERENCE_TEXT` |

## Sample SQL

```sql
Select USER_PREFERENCE_SEQ_NUM, USER_ID, APP_NAME, PAGE_NAME, PREFERENCE_TEXT
from USER_PREFERENCE
where USER_ID = :userid
```

## Operations and processes
- [Retrieve all preferences for a user](../operations-processes.md#retrieve-all-preferences-for-a-user)

## Business rules
- [BR-001: User IDs are normalized to lower case](../business-rules.md#br-001-user-ids-are-normalized-to-lower-case)
- [BR-006: Preference item payload is JSON-encoded key/value data](../business-rules.md#br-006-preference-item-payload-is-json-encoded-keyvalue-data)

## Sources
- SAIF.Framework.Preferences\PreferenceData.cs
