FirebirdSQL logo
 FUNCTIONPACKAGE BODY 

Utilisation du type de colonne lors de la déclaration des paramètres

Les paramètres d’entrée et de sortie peuvent être déclarés en utilisant le type de données colonne des tables et vues existantes. Pour ce faire, on utilise la phrase TYPE OF COLUMN, suivie du nom de la table ou de la vue et d’un nom de colonne séparé par un point.

Lorsque vous utilisez TYPE OF COLUMN, seul le type de données est hérité, et dans le cas des types de chaînes de caractères, également le jeu de caractères et l’ordre de tri. Les limitations et les valeurs par défaut de la colonne ne sont jamais utilisées.

Fonctions déterministes

La clause optionnelle DETERMINISTIC dans la déclaration de la fonction indique que la fonction est déterministe. Les fonctions déterministes retournent le même résultat à chaque fois si on leur donne le même ensemble de valeurs d’entrée. Les fonctions non déterministes peuvent retourner des résultats différents à chaque fois, même si on leur donne le même ensemble de valeurs d’entrée.

Note

En fait, dans la version actuelle de Firebird, il n’y a pas de cache de fonctions stockées avec des arguments d’entrée mis en correspondance avec des valeurs de sortie.

Spécifier une instruction DETERMINISTIC est en fait une sorte de promesse que le code de la fonction retournera la même chose. A ce stade, une fonction déterministe est considérée comme un invariant et fonctionne sur les mêmes principes que les autres invariants. C’est-à-dire qu’elle est calculée et mise en cache au niveau d’exécution actuel de cette requête.

Qui peut créer un paquet ?

L’instruction CREATE PACKAGE peut être exécutée :

L’utilisateur qui a créé l’en-tête du paquet devient le propriétaire du paquet.

Exemples

Example 1. Création d’un en-tête de paquet
CREATE PACKAGE APP_VAR
AS
BEGIN
  FUNCTION GET_DATEBEGIN() RETURNS DATE DETERMINISTIC;
  FUNCTION GET_DATEEND() RETURNS DATE DETERMINISTIC;
  PROCEDURE SET_DATERANGE(ADATEBEGIN DATE, ADATEEND DATE DEFAULT CURRENT_DATE);
END

Idem, mais les procédures et fonctions du paquet seront exécutées avec les droits de l’utilisateur qui les définit (propriétaire du paquet).

CREATE PACKAGE APP_VAR
SQL SECURITY DEFINER
AS
BEGIN
  FUNCTION GET_DATEBEGIN() RETURNS DATE DETERMINISTIC;
  FUNCTION GET_DATEEND() RETURNS DATE DETERMINISTIC;
  PROCEDURE SET_DATERANGE(ADATEBEGIN DATE, ADATEEND DATE DEFAULT CURRENT_DATE);
END