---
title: Makra i funkcje
description: Definiuj makra SQL bez typów i funkcje typesql z typami, korzystając z ograniczonego, statycznego rozwiązywania.
species: reference
---
# Makra i funkcje

Użyj `create macro`, aby utworzyć pomocnicze makro SQL bez typów. Użyj `create function`, gdy kod wywołujący potrzebuje sprawdzanych parametrów i sprawdzanego typu zwrotnego.

```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.charges
```

## Makra SQL

Składnia `create macro name(parameters) as expression` jest zgodna z dialektem zapytań. Parametry mogą mieć wartości domyślne. Makra tabel używają `as table`, po którym następuje zapytanie. Moduł sprawdzający traktuje je jako funkcje bez typów.

## Funkcje z typami

Funkcja z typami deklaruje każdy parametr oraz jeden skalarny lub tabelaryczny typ zwrotny. Ciała funkcji są wyrażeniami lub zapytaniami, a nie instrukcjami proceduralnymi. Rozwiązywanie jest statyczne, a rekursja zwraca `TS0406`.

Moduł sprawdzający porównuje ciało z zadeklarowanym typem zwrotnym. Skompilowana instrukcja wykonywana w środowisku uruchomieniowym zawiera obsługiwany SQL bez składni adnotacji.

## Kolejność rozwiązywania

Lokalne deklaracje i eksporty zaimportowanych pakietów tworzą jedno zamknięte środowisko. Powielone eksporty są błędami, a nie nadpisaniami zależnymi od kolejności. Wywołania funkcji są sprawdzane pod kątem liczby argumentów (`TS0404`) i ich typów (`TS0405`).

Używaj pakietów, aby współdzielić funkcję między plikami. Zachowaj deklarację lokalną, gdy jej znaczenie dotyczy jednego modelu i powinno być recenzowane razem z nim.
