マクロと関数#
型なしの SQL ヘルパーには create macro を使います。呼び出し側で引数と戻り値の型を検証する必要がある場合は、create function を使います。
typesql
create function cents_to_dollars(cents: integer!) returns decimal(18, 2) as
cast(cents as decimal(18, 2)) / 100.0;
select cents_to_dollars(amount)
from titan.stripe.chargesSQL マクロ#
create macro name(parameters) as expression はクエリの方言に従います。パラメーターにはデフォルト値を指定できます。テーブルマクロは as table の後にクエリを記述します。検証器はこれらを型なしの関数として扱います。
型付き関数#
型付き関数は、各パラメーターと、スカラーまたはテーブルの戻り値を 1 つ宣言します。本体は式またはクエリで、手続き的な文ではありません。解決は静的に行い、再帰には TS0406 を返します。
検証器は本体を宣言した戻り値に照らして検証します。コンパイル後の実行文には、対応する SQL だけが含まれ、注釈構文は残りません。
解決順序#
ローカル宣言とインポートしたパッケージのエクスポートは、1 つの確定した環境を構成します。重複するエクスポートは順序に依存して上書きせず、エラーにします。関数呼び出しでは引数の数(TS0404)と型(TS0405)を検証します。
ファイルをまたいで関数を共有するにはパッケージを使います。1 つのモデルだけに意味があり、そのモデルと一緒にレビューすべき場合は、ローカル宣言にしてください。