Essentiellement, j'aimerais pouvoir créer une fonction scalaire qui accepte un nombre variable de paramètres et les concaténer ensemble pour renvoyer un seul VARCHAR. En d'autres termes, je veux pouvoir créer un repli sur un nombre incertain de variables et retourner le résultat du repli en VARCHAR, similaire à .Aggregate en C# ou Concatenate en Common Lisp.Paramètres optionnels infinis
Mon code pseudo (procédure) pour une telle fonction est la suivante:
- définir une variable VARCHAR
- foreach paramètre non nul convertir en un VARCHAR et l'ajouter à la variable VARCHAR
- renvoie la variable VARCHAR comme le résultat de la fonction
Existe-t-il une manière idiomatique de faire quelque chose comme ça dans MS-SQL? Est-ce que MS-SQL Server a quelque chose de similaire au paramètre C# params/Common Lisp & reste keyword?
- EDIT -
Est-il possible de faire quelque chose de semblable à cela sans l'aide des paramètres table, de sorte qu'un appel à la fonction pourrait ressembler à:
MY_SCALAR_FUNC ('A', NULL, 'C', 1)
au lieu d'avoir à passer par le rigmarole de mise en place et d'insertion dans une nouvelle table temporaire à chaque fois que la fonction est appelée?
Désolé, j'aurais dû être plus clair. Je cherchais spécifiquement à éviter les paramètres de table, je vais mettre à jour la question pour la rendre plus claire. –
@BenH J'ai édité dans une option, applicable uniquement pour la concaténation de chaînes et aussi uniquement sur SQL 2012 si cela aide? – Meff
Ça aide, merci Meff. Cela me fait me demander comment ils ont réalisé la mise en œuvre de cette fonction. Nous n'utilisons pas 2012 pour ce projet particulier, mais nous sommes sur d'autres et je n'étais pas au courant de cette fonction, alors merci. –