Bestimmen Sie, ob der SP-Parameter in T-SQL einen Standardwert hat

9

Gibt es eine Möglichkeit, aus SQL Server (ich bin auf 2012 FYI) zu bestimmen, wenn die Parameter eines SP die Standardwerte haben? Es gibt andere Threads zu diesem Thema aber die Vorschläge scheinen mir diese Informationen nicht genau zu vermitteln.

Hier sind ein paar Dinge, die ich versucht habe:

%Vor%

Die obige Abfrage gibt eine Anzahl von Spalten zurück, die sich anhören, als würde ich den richtigen Baum bellen (has_default_value, default_value unter ihnen) aber diese scheinen nicht zu variieren, ob ich einen Standardwert habe in meinem SP oder nicht. (has_default ist immer 0, default_value ist immer null)

%Vor%

Gleicher Deal; Der obige SP gibt eine Anzahl von Spalten zurück, einschließlich NULLABLE und IS_NULLABLE; NULLABLE ist immer gleich 1 und IS_NULLABLE = YES, unabhängig von meinem SP-Inhalt.

Eine Notiz; SQL Server Management Studio zeigt übersichtlich die Metadaten an, die jedem SP-Parameter zugeordnet sind.

Ich habe mit SQL Profiler untersucht, was passiert, wenn ich die Parameter eines SP im Objekt-Explorer von Management Studio anschaue. Wenn Sie den Parameterordner erweitern, werden zwei Abfragen ausgeführt. Die erste Abfrage ist ein bisschen lang für das Einfügen hier (obwohl ich das tun werde, wenn es hilfreich ist). Es enthält eine Spalte namens DEFAULT VALUE; aber es ist immer NULL, soweit ich das beurteilen kann. Die zweite Abfrage gibt einfach den Körper des SP zurück; vermutlich, um in das Texteditor-Fenster auszugeben (obwohl ich befürchte, dass es in mgmt studio einige Analysen geben könnte!)

Als Referenz / um sicherzustellen, dass ich meine Murmeln nicht verliere, habe ich zwei sinnlose Sps nur zum Testen erstellt. Sie sehen aus wie:

%Vor%     
Sanjay Uttam 01.02.2013, 18:04
quelle

3 Antworten

1

MS SQL speichert die Standardeinstellungen nur für gespeicherte CLR-Prozeduren und -Funktionen. Daher kann die Objektdefinition nur in diesem Fall analysiert werden. Um das Beispiel auszuführen, können Sie eine leere gespeicherte Prozedur erstellen oder eine andere beliebige Prozedur verwenden.

%Vor%

Diese Abfrage gibt eine Liste der Standardwerte für die gespeicherte Prozedur zurück:

%Vor%

Und durch diese Abfrage können Sie wissen, ob die gespeicherte Prozedur Standardwerte enthält:

%Vor%     
Devart 03.04.2013, 11:56
quelle
1

wenn der Parametername "AS" -Symbole hat - funktioniert nicht versuche mein

%Vor%     
Andrey Rubanko 18.07.2013 10:39
quelle
-1

Es gibt viel einfachere und korrektere Methoden, um alle Ein- und Ausgabeparameter von SP und Funktionen zu erhalten. Bitte versuchen Sie es mit der folgenden Anweisung. (Quelle ist Ссылка )

%Vor%     
user2696768 19.08.2013 14:26
quelle