Rupture de script SQL

J'écris un script SQL plutôt long qui tourne près de 2000 lignes de code. Comme il devient vraiment difficile de comprendre un script long, je voudrais le décomposer en unités logiques et les séparer dans d'autres files SQL.

Quelle serait la meilleure façon de faire cela? Chaque unité logique doit-elle être une procédure stockée? peut-être un UDF?

Profitez des procédures et des fonctions stockées. Si vous faites du SQL pur, il n'y a pas de meilleur endroit pour les unités logiques de votre code. En outre, il est beaucoup plus facile de maintenir / éditer votre code.

Cela étant dit, si votre script est aussi long, vous pouvez regarder ce que vous faites, et penser à un autre langage de script, ou même C # / LINQ. Parfois, il est logique de tout garder en SQL, et parfois vous forcer quelque chose en SQL, mais vous seul pouvez faire cette détermination.

En outre, C # ou un autre langage de script s'intègre facilement au contrôle de source. Juste des choses à penser!

Tout d'abord, 2000 lignes de SQL n'est pas un montant trop important à avoir dans un file (DDL exécute souvent autant ou plus pour une database modestement grande). Cependant, c'est beaucoup trop pour avoir dans un seul proc! La manière d'aborder cela consiste en effet à décomposer les composants logiques en procédures distinctes. À less d'avoir un goulot d'étranglement spécifique à surmonter ou des opérations difficiles à réaliser en SQL, vous n'aurez pas besoin d'UDF.

Un dernier conseil: pensez à simplifier votre access aux données via Views.

BTW: qu'est-ce que vous essayez d'accomplir avec un si grand proc? Je fais énormément de travail en utilisant T-SQL et je n'ai jamais approché 2000 lignes de code!

Si vous utilisez des fonctions UDF, assurez-vous de connaître la différence entre les fonctions scalaires et celles en ligne:

http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/05/23/reuse-your-code-with-cross-apply.aspx

Ce que vous utilisez pour le split peut varier en fonction de ce que vous faites.

Ceci est similaire à tout langage de programmation, les publicités les scripts / fonctions deviennent trop grandes, le besoin d'être brisé.

Si votre script est volumineux en raison de requêtes identiques ou similaires, le script peut être réduit en ajoutant ces requêtes en tant que vues.

Les procédures stockées et les fonctions définies par l'user sont également un bon moyen de procéder, en fonction de ce que fait votre code.

divisez-le en plusieurs sps, ajoutez des blocs try-catch et le error handling (souvenez-vous, la division par 0 n'est pas une erreur trapable), et configurez un travail pour exécuter chacun en séquence.

Cela semble être beaucoup de code pour un lot.

Décomposer chaque étape / process logique (c.-à-d. Créer ordre / ordre d'expédition / inscrire le client) dans une procédure stockée distincte. Vous pouvez find utile de créer un diagramme de process et de l'utiliser pour vous aider à split votre lot de code T-SQL.

Si vous tentez d'effectuer une logique de calcul à l'aide de T-SQL, déplacez ces opérations vers du code managé tel que des fonctions CLR, etc.