Wie formatiere ich die SQL PRINT Nachrichten – eine Art von c printf ()?

… Nun, nicht genau nur für PRINT . Ich muss eine String-Variable den Wert zuweisen, der explizite Substrings mit Integer-Werten (und ggf. mit anderen Typwerten) mischt. Das Ziel ist es, die characterfolge für die logging zu bekommen.

So weit, ich benutze den Code wie:

 DECLARE @msg nvarchar(1000) ... SET @msg = @procname + 'result = ' + CAST(@result AS nvarchar(5)) + '; error = ' + CAST(@error AS nvarchar(5)) 

wo der @procname ein String wie sp_my_proc: ist und der @result und der @error Integer-variables sind. Das Ergebnis sollte aussehen (keine zusätzlichen Räume um die Zahlen, nur die minimale Länge):

 sp_my_proc: result = 3; error = 0 

Der obige Ansatz funktioniert, aber … Gibt es einen besseren path für die Umwandlung einer Integer-Variable in den String als CAST(@result AS nvarchar(5)) ? (Betrachten Sie die magische Zahl 5, die ein kleines Detail ist, um ignoriert zu werden.)

Wie lösen Sie das Problem der Erzeugung solcher Strings in Ihrem Code?

Danke, Petr

In SQL-server können Sie die STR () – function verwenden. http://msdn.microsoft.com/ru-ru/library/ms189527.aspx Der Standardwert für 'length' Parameter ist 10. Da eine Integer-Variable nie länger als 10 ist Symbole (du hättest einen Überlauf) das geht immer ohne Fehler:

 declare @test int set @test = 333333333 select STR(@test) 

Auch einen Blick auf String.Format wie functionalität in T-SQL?