EXECSQL
Aperçu
L'application de workflow EXECSQL vous permet d'exécuter une ou plusieurs requêtes SQL dans un processus.
Elle vous permet de récupérer des informations au travers de requêtes SELECT par exemple, afin de pouvoir utiliser le résultat dans des conditions du processus. 
Mode de fonctionnement
L'application EXECSQL requiert les paramètres
CONNECTION_NAME(qui correspond au nom de la connexion) etQUERY(qui correspond à la requête à exécuter).Il est possible de spécifier une ou plusieurs commandes par action EXECSQL. Pour ceci, les paramètres doivent être préfixés par
CMDx_, oùxcorrespond au numéro de la commande (p.ex. :CMD1_).Les types de requête supportés sont
SELECT,INSERT,UPDATE,DELETE,SCALARetPROCEDURE.L'application supporte la gestion des transactions SQL.
Il est possible d'utiliser une connexion globale pour plusieurs commandes. Pour ceci, il ne faut pas préfixer le paramètre
CONNECTION_NAMEparCMDx_. Il n'est pas possible d'utiliser une connexion globale et une connexion locale (p.ex. :CONNECTION_NAMEetCMD2_CONNECTION_NAME).Il est possible d'utiliser une transaction globale pour plusieurs commandes. Pour ceci, il ne faut pas préfixer le paramètre
TRANSACTIONparCMDx_. Il n'est pas possible d'utiliser une transaction globale et une transaction locale (ex:TRANSACTIONetCMD2_TRANSACTION). Il est nécessaire de définir une connexion globale pour pouvoir définir une transaction globale.Des logs d'application sont disponibles. Ceux-ci peuvent être spécifiés en définissant la valeur du paramètre
ExecSqlLogLeveldans le fichierweb.configsur0pour désactiver la journalisation,1pour les logs d'erreur,2pour des logs d'informations ou3pour les logs de débogage; la valeur par défaut est0.
Paramètres obligatoires
Paramètre
Type
Direction
Description
CONNECTION_NAME
TEXT
IN
Nom de la connexion à utiliser
Le nom de la connexion doit être défini dans le fichier web.config de WorkflowGen.
QUERY
TEXT
IN
Requête à exécuter
Paramètres facultatifs
Général
Paramètre
Type
Direction
Description
TYPE
TEXT
IN
Type de la requête à exécuter
Les types supportés sont :
SELECT(par défaut)INSERTUPDATEDELETESCALARPROCEDURE
TRANSACTION
TEXT
IN
Lorsque défini sur Y , l'application déclenche une transaction SQL avant l'exécution de la requête et effectuera un commit ou rollback en fonction du résultat
Par défaut : N
ON_ERROR
TEXT
IN
Lorsque défini sur CATCH, l'application ne retournera pas d'erreur à WorkflowGen. Ceci permettra de stocker un message d'erreur dans le paramètre ERROR_MESSAGE et de continuer l'exécution.   
Par défaut : THROW
TIMEOUT
NUMERIC
IN
Indique le nombre de secondes à définir dans le temps d'exécution de la commande
Par défaut : 30
FORM_DATA
FILE
INOUT
Fichier FORM_DATA contenant la définition XML du processus
FORM_DATA_GRIDVIEW
TEXT
IN
Identifiant du tableau à alimenter dans le FORM_DATA
RESULT_CSV_SEPARATOR
TEXT
IN
Séparateur utilisé dans la valeur ou fichier CSV de retour
Par défaut : , (virgule)
Paramètres de requête
Il est possible de définir pour chaque requête des paramètres à utiliser lors de l'exécution. Les paramètres peuvent être définis de deux façons, soit en utilisant le préfixe QUERY_PARAM,  soit en utilisant un arobase (@).
📌 Exemple
Vous pouvez utiliser QUERY_PARAM_MyParam ou @MyParam, où MyParam correspond au nom du paramètre défini dans la requête. 
Paramètre
Type
Direction
Description
QUERY
TEXT
IN
SELECT * FROM USERS WHERE LASTNAME = @UserLastname
QUERY_PARAM_UserLastName  / @UserLastName
TEXT
IN
Doe
Paramètres de retour
Général
Paramètre
Type
Direction
Description
ERROR_MESSAGE
TEXT
OUT
Contient le message d'erreur dans le cas où la valeur du paramètre contient CATCH et qu'une exception est levée lors de l'exécution
RESULT_COMMIT
TEXT
OUT
Indique si un commit a été exécuté sur la transaction
Valeurs possibles : Y ou N
Requête SELECT
SELECTParamètre
Type
Direction
Description
RESULT_ROWx_fieldName
TEXT
NUMERIC
DATETIME
OUT
Contient la valeur de la colonne fieldName pour la ligne x
Vous devez remplacer fieldname par votre nom de colonne (p.ex. : LASTNAME) et x par le numéro de la ligne (p.ex. : 2).
RESULT_ROW_fieldName
TEXT
NUMERIC
DATETIME
OUT
Contient la valeur de la colonne fieldName pour la première ligne retournée
RESULT_JSON
TEXT
OUT
Contient le résultat de la requête au format JSON
RESULT_JSON_FILE
FILE
OUT
Contient le résultat de la requête au format JSON stocké dans un fichier .json
RESULT_XML
TEXT
OUT
Contient le résultat de la requête au format XML
RESULT_XML_FILE
FILE
OUT
Contient le résultat de la requête au format XML stocké dans un fichier .xml
RESULT_CSV
TEXT
OUT
Contient le résultat de la requête au format CSV
Les données sont séparées suivant le séparateur défini dans le paramètre RESULT_CSV_SEPARATOR
RESULT_CSV_FILE
FILE
OUT
Contient le résultat de la requête au format CSV stocké dans un fichier .csv
Les données sont séparées suivant le séparateur défini dans le paramètre RESULT_CSV_SEPARATOR
Requête SCALAR
SCALARParamètre
Type
Direction
Description
RESULT
NUMERIC
OUT
Contient le résultat numérique d'une requête de type SCALAR
Exemples
Requête SELECT
SELECTStockage du retour dans des données
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
QUERY
TEXT
IN
SELECT LASTNAME, FIRSTNAME, USERNAME FROM USERS
RESULT_JSON
TEXT
OUT
{ "TABLE":[ { "LASTNAME":"Administrator", "FIRSTNAME":"WorkflowGen", "USERNAME":"wfgen_admin" }, { "LASTNAME":"Doe", "FIRSTNAME":"John", "USERNAME":"john.doe" } ] }
RESULT_JSON_FILE
FILE
OUT
result.json
RESULT_CSV
TEXT
OUT
"LASTNAME","FIRSTNAME","USERNAME" "Administrator","WorkflowGen","wfgen_admin"
"Doe","John","john.doe"
RESULT_CSV_FILE
FILE
OUT
result.csv
RESULT_ROW_LASTNAME
TEXT
OUT
Administrator
RESULT_ROW1_FIRSTNAME
TEXT
OUT
WorkflowGen
RESULT_ROW2_USERNAME
TEXT
OUT
john.doe
Alimentation d'un tableau
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
QUERY
TEXT
IN
SELECT LASTNAME as REQUEST_GRID_LASTNAME, FIRSTNAME as REQUEST_GRID_FIRSTNAME, USERNAME as REQUEST_GRID_USERNAME FROM USERS
FORM_DATA
FILE
INOUT
FORM_DATA
FORM_DATA_GRIDVIEW
TEXT
IN
REQUEST_GRID
Requête INSERT
INSERTParamètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
INSERT
QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (@IdCategory, @Name, @Description)
QUERY_PARAM_IdCategory
NUMERIC
IN
1
QUERY_PARAM_Name
TEXT
IN
NomCategorie
QUERY_PARAM_Description
TEXT
IN
Description de la catégorie
Voici une autre possibilité pour les paramètres de requête :
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
INSERT
QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (@IdCategory, @Name, @Description)
@IdCategory
NUMERIC
IN
1
@Name
TEXT
IN
NomCategorie
@Description
TEXT
IN
Description de la catégorie
Requête UPDATE
UPDATEParamètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
UPDATE
QUERY
TEXT
IN
UPDATE WFCATEGORY SET NAME = @Name WHERE ID_CATEGORY = @IdCategory
QUERY_PARAM_IdCategory
NUMERIC
IN
1
QUERY_PARAM_Name
TEXT
IN
NouveauNomCategorie
Requête DELETE
DELETEParamètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
DELETE
QUERY
TEXT
IN
DELETE FROM WFCATEGORY WHERE ID_CATEGORY = @IdCategory
QUERY_PARAM_IdCategory
NUMERIC
IN
1
Procédure stockée
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
PROCEDURE
QUERY
TEXT
IN
INSERT_CATEGORY
QUERY_PARAM_ID_CATEGORY
NUMERIC
IN
1
QUERY_PARAM_NAME
TEXT
IN
NomCategorie
QUERY_PARAM_DESCRIPTION
TEXT
IN
Description de la catégorie
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
SELECT
QUERY
TEXT
IN
EXEC GET_USER @USERNAME = @User
QUERY_PARAM_User
NUMERIC
IN
wfgen_admin
Requête SCALAR
SCALARParamètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
TYPE
TEXT
IN
SCALAR
QUERY
TEXT
IN
SELECT COUNT(*) FROM USERS
RESULT
NUMERIC
OUT
2
Lancement de plusieurs requêtes
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
CMD1_TYPE
TEXT
IN
INSERT
CMD1_QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (@IdCategory, @Name, @Description)
CMD1_QUERY_PARAM_IdCategory
NUMERIC
IN
1
CMD1_QUERY_PARAM_Name
TEXT
IN
NomCategorie
CMD1_QUERY_PARAM_Description
TEXT
IN
Description de la catégorie
CMD2_QUERY
TEXT
IN
SELECT NAME FROM WFCATEGORY WHERE ID_CATEGORY = @IdCategory
CMD2_@IdCategory
NUMERIC
IN
1
CMD2_RESULT_ROW_NAME
TEXT
OUT
NomCategorie
Requêtes avec transactions et gestion des erreurs
Paramètre
Type
Direction
Valeur
CONNECTION_NAME
TEXT
IN
MainDbSource
CMD1_TYPE
TEXT
IN
INSERT
CMD1_QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (1, "Nom", "Description")
CMD1_TRANSACTION
TEXT
IN
Y
CMD1_ON_ERROR
TEXT
IN
CATCH
CMD1_COMMIT
TEXT
OUT
Y
CMD1_ERROR_MESSAGE
TEXT
OUT
NULL
CMD2_TYPE
TEXT
IN
INSERT
CMD2_QUERY
TEXT
IN
INSERT INTO WFCATEGORY (ID_CATEGORY,NAME,DESCRIPTION) VALUES (1, "AutreNom", "Autre description")
CMD2_TRANSACTION
TEXT
IN
Y
CMD2_ON_ERROR
TEXT
IN
CATCH
CMD2_COMMIT
TEXT
OUT
N
CMD2_ERROR_MESSAGE
TEXT
OUT
Cannot insert duplicate key in object 'dbo.WFCATEGORY'. The duplicate key value is (1).