Appel de méthode 4D dans des requêtes SQL

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   


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 :

Image non disponible

* 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 :

code 4D - exemple avec paramètre
Sélectionnez

  `-------------------------------------------------
  ` 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
  `-------------------------------------------------
code 4D - exemple sans paramètre
Sélectionnez

  `-------------------------------------------------
  ` 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
  `-------------------------------------------------
code 4D - méthode appelée : m_SendMail
Sélectionnez

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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2008 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.