Class: SprocOutputBuilder<TOut>
Defined in: src/procedure/StoredProcedureBuilder.ts:83
Intermediate execution builder returned after defining output parameters with .output<TOut>().
Provides strongly-typed execution methods (query, queryMultiple, reader, run)
that return both tabular query results and strongly-typed output parameters.
Type Parameters
| Type Parameter | Description |
|---|---|
TOut extends object | Interface representing expected OUTPUT or INOUT parameters. |
Constructors
Constructor
new SprocOutputBuilder<
TOut>(builder,outputNames):SprocOutputBuilder<TOut>
Defined in: src/procedure/StoredProcedureBuilder.ts:84
Parameters
| Parameter | Type |
|---|---|
builder | StoredProcedureBuilder |
outputNames | keyof TOut[] |
Returns
SprocOutputBuilder<TOut>
Methods
query()
query<
TRecord>():Promise<SprocResult<TRecord[],TOut>>
Defined in: src/procedure/StoredProcedureBuilder.ts:122
Executes the stored procedure and returns a single tabular record set together with typed OUTPUT parameters.
Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
TRecord | unknown | The type of each row in the returned tabular record set. |
Returns
Promise<SprocResult<TRecord[], TOut>>
A Promise resolving to SprocResult with records: TRecord[] and out: TOut.
Usecase
Ideal for search or report procedures that return matched rows alongside aggregated metrics (e.g. TotalCount, MaxScore).
Example
SQL Server (MSSQL):
const { records, out } = await context.procedure('usp_SearchUsers')
.input({ SearchTerm: 'Alice', Page: 1, PageSize: 20 })
.output<{ TotalCount: number }>()
.query<User>();
MySQL:
const { records, out } = await context.procedure('sp_search_users')
.input({ p_search: 'Alice', p_limit: 20 })
.output<{ p_total_count: number }>()
.query<User>();
PostgreSQL:
const { records, out } = await context.procedure('fn_search_users')
.input({ search_term: 'Alice' })
.output<{ out_total: number }>()
.query<User>();
queryMultiple()
queryMultiple<
T>():Promise<SprocResult<T,TOut>>
Defined in: src/procedure/StoredProcedureBuilder.ts:157
Executes the stored procedure and returns multiple tabular record sets alongside typed OUTPUT parameters.
Type Parameters
| Type Parameter | Description |
|---|---|
T extends unknown[] | Tuple defining the types of each returned record set, e.g. [OrderHeader[], OrderItem[]]. |
Returns
Promise<SprocResult<T, TOut>>
A Promise resolving to SprocResult with records: T and out: TOut.
Usecase
Fetching complex hierarchical or composite datasets (e.g. Order Header + Order Items + Shipping Info) in a single database round-trip.
Example
SQL Server (MSSQL):
const { records: [orders, items], out } = await context.procedure('usp_GetOrderDetails')
.input({ OrderId: 1001 })
.output<{ OrderStatus: string; TotalAmount: number }>()
.queryMultiple<[OrderHeader[], OrderItem[]]>();
MySQL:
const { records: [orders, items], out } = await context.procedure('sp_get_order_details')
.input({ p_order_id: 1001 })
.output<{ p_status: string }>()
.queryMultiple<[OrderHeader[], OrderItem[]]>();
reader()
reader():
Promise<MultipleResultsReader<TOut>>
Defined in: src/procedure/StoredProcedureBuilder.ts:185
Executes the stored procedure and returns a sequential MultipleResultsReader along with typed output parameters.
Returns
Promise<MultipleResultsReader<TOut>>
A Promise resolving to MultipleResultsReader<TOut>.
Usecase
Consuming multiple tables sequentially using a forward-only reader pattern (similar to Dapper GridReader).
Example
const reader = await context.procedure('usp_GetAnalyticsReport')
.input({ Year: 2026, Quarter: 1 })
.output<{ ReportGeneratedAt: Date }>()
.reader();
const summary = reader.readFirst<RevenueSummary>();
const monthly = reader.read<MonthlyBreakdown>();
const topBuyers = reader.read<CustomerRanking>();
run()
run():
Promise<SprocResult<void,TOut>>
Defined in: src/procedure/StoredProcedureBuilder.ts:229
Executes the stored procedure with no tabular result set, returning only typed output parameters and return values.
Returns
Promise<SprocResult<void, TOut>>
A Promise resolving to SprocResult<void, TOut>.
Usecase
Executing mutating business actions, generating sequential invoice codes, or performing transactional fund transfers.
Example
SQL Server (MSSQL):
const { out, returnValue } = await context.procedure('usp_CreateInvoice')
.input({ CustomerId: 42, SubTotal: 150.00 })
.output<{ InvoiceNumber: string; GeneratedId: number }>()
.run();
console.log('Invoice:', out.InvoiceNumber); // e.g. "INV-2026-0042"
console.log('ID:', out.GeneratedId);
PostgreSQL:
const { out } = await context.procedure('sp_create_invoice')
.input({ p_customer_id: 42, p_subtotal: 150.00 })
.output<{ p_invoice_no: string; p_new_id: number }>()
.run();
MySQL:
const { out } = await context.procedure('sp_create_invoice')
.input({ customer_id: 42, amount: 150.00 })
.output<{ out_invoice_no: string; out_id: number }>()
.run();