Mit einfachen gespeicherte Prozedur wie folgt aus:Tsql Metadaten gespeicherten Prozedur Erste Parameter
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;
Wenn diese Anweisung ausgeführt wird Meta-Daten Parameter für gespeicherte Prozeduren speziell zu bekommen „has_default_value“, „default_value“ und „IS_NULLABLE“ Spalten Ich habe festgestellt, dass ihre Werte ungültig sind. Diese
SELECT *
FROM sys.parameters
WHERE object_id = OBJECT_ID('[dbo].[ProcedureName]');
ist das Ergebnis:
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
Gibt es einen richtigen Weg gültige Meta-Daten über die gespeicherte Prozedur speziell diese drei Spalten zu bekommen?
Blick auf: https://msdn.microsoft.com/en-us/library/ms173796.aspx – McNets
In der [Dokumentation] (https: //msdn.microsoft.com/en-us/library/ms176074.aspx): SQL Server verwaltet nur Standardwerte für CLR-Objekte in dieser Katalogsicht; Daher hat diese Spalte für Transact-SQL-Objekte den Wert 0. Um den Standardwert eines Parameters in einem Transact-SQL-Objekt anzuzeigen, fragen Sie die Definitionsspalte der sys.sql_modules-Katalogsicht ab oder verwenden Sie die Systemfunktion OBJECT_DEFINITION. –
Going muss die Definition von sys.sql_modules oder etwas ähnliches zu analysieren – scsimon