Holen Sie sich aktuelle Sp-Parameter und Werte – (reflection gleichermaßen)?

Lets sagen, ich habe diese einfache SP:

CREATE PROCEDURE mySp @a int, @b int AS BEGIN ... ... select ________ END 

Nun sagen wir, ich gebe es über:

exec mySp 1,2

Frage:

Gibt es irgendeinen Code, den ich im ______ also wird es mir zeigen:

 "you sent param named a with value 1" "you sent param named b with value 2" 

Dieser Code sollte dynamisch sein (in einigen SPs eingefügt). Also kann ich nicht tun:

 select "you sent param named a...with value "+cast (@a...) select "you sent param named b...with value "+cast (@b...) 

(es muss seine Kontextparameter und Werte zur Laufzeit lesen)

Ist es möglich ?

Ich glaube nicht, dass es möglich ist, es sauber zu machen. Eine wirklich schmutzige Art zu tun ist, um in einer zusätzlichen Varchar-Spalte, die eine kommagetrennte list Werte der Rest der Parameter ist passieren. Dann können Sie die Namen der einzelnen Params erhalten und mit dem übergebenen Parameter übereinstimmen. Hier ist ein Beispiel

 CREATE PROCEDURE mySp @a int, @b INT, @c varchar(MAX) AS BEGIN declare @names varchar(MAX) = '' SELECT @names += name +',' FROM sys.parameters WHERE object_id = @@PROCID AND name <> '@c' ORDER BY parameter_id SELECT 'The passed in values for '+@names + ' are ' +@c END go EXEC mySp 1,1, '1,1'