2

...まあ、正確には だけではありませんPRINT。文字列変数に、明示的な部分文字列と整数値 (および場合によっては他の型の値) を混合した値を割り当てる必要があります。目標は、ログ用の文字列を取得することです。

これまでのところ、次のようなコードを使用しています。

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

ここで、@procnameは のような文字列sp_my_proc:で、@result@errorは整数変数です。結果は次のようになります (数字の周りに余分なスペースはなく、最小の長さだけです):

sp_my_proc: result = 3; error = 0

上記のアプローチは機能しますが...整数変数を文字列に変換するより良い方法はありますCAST(@result AS nvarchar(5))か? (マジック ナンバー 5 は、無視されるべきマイナーな詳細であると考えてください。)

コード内でそのような文字列を生成する問題をどのように解決しますか?

ありがとう、ペトル

4

1 に答える 1

1

SQL-Server では、STR() 関数を使用できます http://msdn.microsoft.com/ru-ru/library/ms189527.aspx 「長さ」パラメーターの既定値は 10 です。整数変数は 10 より長くなることはないため、シンボル (オーバーフローがあります) これは常にエラーなしで機能します:

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

また、 T-SQL の String.Format のような機能を見てみましょう。

于 2012-08-31T08:59:59.270 に答える