Skip to content

Procedure

Typed metadata builders for Microsoft SQL Server stored procedure calls.

This module defines the Procedure values consumed by MssqlClient.call. make starts a procedure definition, param and outputParam add typed Tedious parameter metadata, withRows sets the expected row type, and compile binds input values before execution. The module also defines the typed result shape for output parameters and returned rows.

10 exports Added in v4.0.0 Source

Combinators

compile

Added in v4.0.0 Source

Binds input values to a SQL Server stored procedure definition, producing a value that can be executed with MssqlClient.call.

Signature

declare function compile<
  I extends Record<string, Parameter<any>>,
  O extends Record<string, Parameter<any>>,
  A,
>(
  self: Procedure<I, O, A>,
): (input: {
  [K in string | number | symbol]: I[K] extends Parameter<T> ? T : never;
}) => ProcedureWithValues<I, O, A>;

outputParam

Added in v4.0.0 Source

Adds a typed output parameter to a SQL Server stored procedure definition.

Signature

declare function outputParam<A>(): <N extends string, T extends DataType>(
  name: N,
  type: T,
  options?: any,
) => <I extends Record<string, Parameter<any>>, O extends Record<string, Parameter<any>>>(
  self: Procedure<I, O>,
) => Procedure<I, { [K in string | number | symbol]: O & { [K in string]: Parameter<A> }[K] }>;

param

Added in v4.0.0 Source

Adds a typed input parameter to a SQL Server stored procedure definition.

Signature

declare function param<A>(): <N extends string, T extends DataType>(
  name: N,
  type: T,
  options?: any,
) => <I extends Record<string, Parameter<any>>, O extends Record<string, Parameter<any>>>(
  self: Procedure<I, O>,
) => Procedure<{ [K in string | number | symbol]: I & { [K in string]: Parameter<A> }[K] }, O>;

withRows

Added in v4.0.0 Source

Sets the expected row type for a SQL Server stored procedure definition.

Signature

declare function withRows<A extends object = Row>(): <
  I extends Record<string, Parameter<any>>,
  O extends Record<string, Parameter<any>>,
>(
  self: Procedure<I, O>,
) => Procedure<I, O, A>;

Constructors

make

Added in v4.0.0 Source

Creates an empty SQL Server stored procedure definition for the given procedure name.

Signature

declare function make(name: string): Procedure<{}, {}>;

Models

Procedure interface

Added in v4.0.0 Source

Pipeable definition of a SQL Server stored procedure, tracking its input parameters, output parameters, and result row type.

Signature

interface Procedure<
  I extends Record<string, Parameter.Parameter<any>>,
  O extends Record<string, Parameter.Parameter<any>>,
  A = never,
> extends Pipeable {
  readonly _tag: "Procedure";
  readonly "~@effect/sql-mssql/Procedure": {
    readonly _A: Covariant<A>;
  };
  readonly name: string;
  readonly outputParams: O;
  readonly params: I;
}

ProcedureWithValues interface

Added in v4.0.0 Source

Stored procedure definition with concrete input values bound for execution.

Signature

interface ProcedureWithValues<
  I extends Record<string, Parameter.Parameter<any>>,
  O extends Record<string, Parameter.Parameter<any>>,
  A,
> extends Procedure<I, O, A> {
  readonly values: { [K in string | number | symbol]: I[K] extends Parameter<T> ? T : never };
}

Other

Procedure

Added in v4.0.0 Source

Namespace containing type helpers and result types for SQL Server stored procedures.

Type IDs

TypeId

Added in v4.0.0 Source

Runtime type identifier used to mark SQL Server stored procedure definitions.

Signature

declare const TypeId: TypeId;

TypeId type

Added in v4.0.0 Source

Type-level identifier used to mark SQL Server stored procedure definitions.

Signature

type TypeId = "~@effect/sql-mssql/Procedure";