Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Passer plus de 4000 caractères à une fonction .Net (SQLCLR)

Dans l'exemple d'hier (Split de chaîne : http://blogs.codes-sources.com/christian/archive/2009/12/17/sql-server-cr-er-une-fonction-de-type-table-tvf-via-net-sqlclr-exemple-d-un-split-de-cha-ne.aspx) de ma fonction de type table écrite en C# et intégré dans le moteur de bases de données, vous aurez peut être remarqué que le premier argument de la fonction n'était qu'un nvarchar(4000).

Pour le nvarchar on ne peut rien changer, les paramètres de fonctions sont exclusivement Unicode, au moins il n'y a pas à jongler entre les pages de code. Par contre il est possible de jouer sur la taille des arguments, bien que cela ne soit à nouveau pas très documenté.

Reprenons la fonction appelée et ses paramètres.

public static IEnumerable Split(

SqlString input,
SqlString separator

)

On va tout d'abord limiter la taille du paramètre « separator », mettons à 10 caractères :

public static IEnumerable Split(

SqlString input,
[SqlFacet(MaxSize = 10)] SqlString separator

)

Pour cela on a ajouté un attribut devant ce paramètre (pour moi c'était une découverte que cette possibilité de mettre un attribut à cet endroit… Bon je ne suis pas développeur mais quand même). Son nom : SqlFacet qui permet de jouer sur les caractéristiques des types passés du ou vers le moteur : taille, précision, longueur, etc.

Pour le nvarchar(max), c'est aussi simple, au lieu de la valeur 10, la convention est de mettre -1 pour signaler que l'on peut utiliser la valeur maximale permise par le moteur (qui est pour le moment de 2Go de taille stockée pour les types caractères).

public static IEnumerable Split(

[SqlFacet(MaxSize = -1)] SqlString input,
[SqlFacet(MaxSize = 10)] SqlString separator

)

On recompile, on déploie et le tour est joué vous pourrez passer autant de caractères que souhaité !

Bonne longueur…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié vendredi 18 décembre 2009 14:20 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01