Betrachten Sie das folgende T-SQL-Code-Snippet:
%Vor%Die Ergebnismenge ist:
%Vor% Wie man sehen kann, ist @b
nicht quadriert, b / c wurde nicht als Ausgabeparameter übergeben (kein OUTPUT
Qualifier bei der Übergabe des Parameters).
Ich würde gerne wissen, ob es eine Möglichkeit gibt, innerhalb des Körpers der gespeicherten Prozedur (dbo.SquareNum body in diesem Fall) nachzusehen, ob ein Parameter tatsächlich als OUTPUT
-Parameter übergeben wurde?
Sie können dies durch Abfragen an sys-Ansichten tun:
%Vor%oder überprüfen Sie Management Studio im Datenbankbaum: [Datenbank] - & gt; Programmierbarkeit - & gt; Gespeicherte Prozeduren - & gt; [Verfahren] - & gt; Parameter
Vielleicht irre ich mich, aber ich glaube nicht, dass es möglich ist. OUTPUT ist Teil der Definition der gespeicherten Prozedur, so dass Sie wissen sollten, ob ein Parameter OUTPUT ist oder nicht. Es gibt keine Möglichkeit, es dynamisch zu setzen, also denke ich, es ist sinnlos, nach Code zu bestimmen, wenn ein Parameter ausgegeben wird oder nicht, weil Sie es bereits kennen.
Wenn Sie versuchen, einen dynamischen Code zu schreiben, sollte Piotr Lasotas Antwort Sie dazu bringen, den richtigen Weg zu erkennen, wann ein Parameter Output ist.
Verwenden Sie die folgende Abfrage, um den Namen aller Parameter abzurufen und zu überprüfen, ob es sich um einen Ausgabeparameter :::
handelt %Vor%um den Körper der gespeicherten Prozedur anzuzeigen
exec sp_helptext ''
Tags und Links sql-server stored-procedures tsql output-parameter