2010-04-12 10 views
1

J'ai écrit un wrapper de base de données O/R qui génère des méthodes wrapper pour les proc stockées qu'il lit depuis la base de données.SqlCommandBuilder.DeriveParameters (commande) et IsNullable

Maintenant, j'ai besoin de produire du code wrapper personnalisé si un paramètre d'entrée d'un proc stocké est par défaut à NULL. Le problème est - J'obtiens des paramètres proc stockés en utilisant:

SqlCommandBuilder.DeriveParameters(command) 

et il n'apporte pas les paramètres par défaut. Est-il possible de rechercher ces défauts? Sont-ils stockés n'importe où dans la base de données?

BTW, j'utilise SQL Server 2008

Répondre

1

Pour T-SQL procédures stockées, le seul moyen de le faire est d'analyser la définition de procédure de la table sys.sql_modules. De l'BOL sur la table sys.parameters la colonne concernant has_default_value:

1 = paramètre a une valeur par défaut. SQL Server ne conserve que les valeurs par défaut pour les objets CLR dans ce catalogue ; par conséquent, cette colonne a une valeur de 0 pour les objets Transact-SQL. Pour afficher la valeur par défaut d'un paramètre dans un objet Transact-SQL, la colonne requête de définition de la vue du catalogue sys.sql_modules, ou utilisez la fonction du système OBJECT_DEFINITION.

Voici un article à quelqu'un qui a écrit une fonction T-SQL qui fait soi-disant juste que: Figure Out the Default Value of Stored Procedure Parameters.

+0

Merci! Je me doutais que je devrais analyser la définition de proc pour obtenir les valeurs par défaut, et je suis content que quelqu'un l'ait déjà fait :) – Andrey

-1

Fondamentalement, la classe SqlCommandBuilder génère automatiquement des commandes de table unique qui sont utilisés pour résoudre les modifications apportées à un ensemble de données avec le serveur sql.

+0

Ceci n'est pas une réponse. La question est: Comment obtenir les paramètres par défaut de la procédure? – Artemix