Produit : 4D v11 SQL · Plateforme : Mac & Windows ♪
Il est possible d'exécuter une méthode projet 4D dans une requête SQL.
Il y a quelques règles à respecter :
* La méthode doit être une méthode projet.
* Cette méthode projet doit être accessible par les requêtes SQL.
Cette option se configure dans les propriétés de la méthode :
* Vous ne pouvez pas appeler une commande ou fonction du langage 4D.
* La fonction qui appelle la méthode doit impérativement retourner une valeur.
* La méthode peut ne pas avoir de paramètre.
* Règles de syntaxe :
Si vous avez des variables interprocess ou des noms de variables comportant des espaces (et tout caractère non SQL),
vous devez utiliser les crochets pour encapsuler le nom de la variable pour que
l'interpréteur SQL puisse l'analyser.
Par exemple : <>MaVarInterprocess ou Ma Variable donneront respectivement [:<>MaVarInterprocess]
et [:Ma Variable].
Voir la documentation Nom_Sql.
Test simple :
`-------------------------------------------------
` fonction SQL appelant une méthode 4D, en passant 1 paramètre
` la requête SQL retourne 1 ligne, PeopleID étant unique
` si la requête retourne n lignes, l'email sera envoyé n fois
`-------------------------------------------------
TABLEAU ENTIER LONG
(
Result1;
0
)
C_TEXTE
(
$zeText
)
$zeText
:=
"Test 1"
Debut SQL
SELECT {fn m_SendMail (
:$zeText
)
AS NUMERIC}
FROM PEOPLE
WHERE PeopleID =
1
INTO :Result1
Fin SQL
`-------------------------------------------------
`-------------------------------------------------
` fonction SQL appelant une méthode 4D, sans passer de paramètre
` la requête SQL retourne 1 ligne, PeopleID étant unique
` si la requête retourne n lignes, l'email sera envoyé n fois
`-------------------------------------------------
TABLEAU ENTIER LONG
(
Result1;
0
)
Debut SQL
SELECT {fn m_SendMail()
AS NUMERIC}
FROM PEOPLE
WHERE PeopleID =
1
INTO :Result1
Fin SQL
`-------------------------------------------------
`-------------------------------------------------
` méthode m_SendMail
`-------------------------------------------------
C_ENTIER LONG
(
$0
)
C_TEXTE
(
$MailServer
;
$From
;
$Dest
;
$Objet
;
$texte
)
$MailServer
:=
"mon.serverdemail.com"
$From
:=
"nom@domaine.fr"
$Dest
:=
"nom@domaine.fr"
$texte
:=
"Ceci est un test"
` commandes du plugin 4D Internet Commands?
` (gestion d'erreur à installer)
C_ENTIER LONG
(
$SMTP_ID
)
$Err
:=
IT_SetTimeOut (
60
)
$Err
:=
IT_MacTCPInit
$Err
:=
SMTP_New (
$SMTP_ID
)
$Err
:=
SMTP_Host (
$SMTP_ID
;
$MailServer
;
0
)
$Err
:=
SMTP_From (
$SMTP_ID
;
$From
;
0
)
$Err
:=
SMTP_To (
$SMTP_ID
;
$Dest
;
1
)
Au cas ou
: (
Nombre de parametres=
0
)
$Objet
:=
"Test 0"
: (
Nombre de parametres=
1
)
C_TEXTE
(
$1
)
$Objet
:=
$1
Fin de cas
$Err
:=
SMTP_Subject (
$SMTP_ID
;
$Objet
;
1
)
$Err
:=
SMTP_Body (
$SMTP_ID
;
$texte
;
1
)
$Err
:=
SMTP_Send (
$SMTP_ID
)
$Err
:=
SMTP_Clear (
$SMTP_ID
)
$Err
:=
IT_SetTimeOut (
0
)
` (gestion d'erreur à installer)
$0
:=
0
`pas d'erreur
`-------------------------------------------------
Voir aussi la documentation Appeler des méthodes 4D depuis le code SQL.