シングルクォート内で変数を展開する

T-SQLで、シングルクォート内で変数を展開するに上手いやり方が解らない・・・
例えば以下のようなクエリ。

DECLARE @d nvarchar(50)
DECLARE @cmd nvarchar(100)

SET @d = N'C:\database\backup'
SET @cmd = N'dir ' + @d + ' /b'
exec master..xp_cmdshell @cmd

効率悪いと思うけど、1時間ほどググってこれで落ち着いたが正しいのかな?
個人的には、以下のように書きたい。書いたらスッキリすると思う。

DECLARE @d nvarchar(50)
SET @d = N'C:\database\backup'
exec master..xp_cmdshell 'dir @{d} /b'
-- とか
exec master..xp_cmdshell '''dir' + @d + ' /b'''

コメントを残す

メールアドレスが公開されることはありません。