Ayant procédure stockée simple comme ceci:Tsql Obtenir des métadonnées de paramètres procédure stockée
CREATE PROCEDURE [dbo].[ProcedureName]
@p1IntMandatory INT ,
@p2IntDefValueZero INT = 0 ,
@p3VarcharWzValue VARCHAR(MAX) = 'abc' ,
@p4DateTimeNullable DATETIME = NULL ,
@p5IntOutWzValueZero INT = 0 OUTPUT
AS
BEGIN
SET NOCOUNT ON;
END;
Lors de l'exécution de cette déclaration pour obtenir des paramètres de procédure stockée méta-données spécialement « has_default_value », « default_value » et colonnes « is_nullable » , J'ai trouvé que leurs valeurs sont invalides.
SELECT *
FROM sys.parameters
WHERE object_id = OBJECT_ID('[dbo].[ProcedureName]');
Ceci est le résultat:
name has_default_value default_value is_nullable
@p1IntMandatory 0 NULL 1
@p2IntDefValueZero 0 NULL 1
@p3VarcharWzValue 0 NULL 1
@p4DateTimeNullable 0 NULL 1
@p5IntOutWzValueZero 0 NULL 1
Y at-il une bonne façon d'obtenir des méta-données valides sur la procédure stockée spécialement ces 3 colonnes?
Regardez: https://msdn.microsoft.com/en-us/library/ms173796.aspx – McNets
Dans les ([Documentation] https: //msdn.microsoft.com/en-us/library/ms176074.aspx): SQL Server ne conserve que les valeurs par défaut pour les objets CLR dans cette vue de catalogue; par conséquent, cette colonne a la valeur 0 pour les objets Transact-SQL. Pour afficher la valeur par défaut d'un paramètre dans un objet Transact-SQL, interrogez la colonne de définition de la vue de catalogue sys.sql_modules ou utilisez la fonction système OBJECT_DEFINITION. –
Aller à avoir à analyser la définition de sys.sql_modules ou quelque chose de similaire – scsimon