3 回答

TA貢獻1803條經(jīng)驗 獲得超6個贊
您需要使用一個中間變量。盡管SQL Server已經(jīng)出現(xiàn)在TODO列表中有幾年了,但它本身在參數(shù)列表中不支持這種操作?。ㄕ垍㈤啞?連接項目:使用標(biāo)量函數(shù)作為存儲過程參數(shù)”)
的語法EXEC是
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH <execute_option> [ ,...n ] ]
}
[;]
該文檔目前尚不清楚可接受格式,value但似乎僅僅是“簡單”表達式,例如文字值或帶@@前綴的系統(tǒng)函數(shù)(例如@@IDENTITY)。SCOPE_IDENTITY()不允許使用其他系統(tǒng)功能(甚至不允許使用不需要括號的功能CURRENT_TIMESTAMP)。
所以暫時您需要使用如下語法
DECLARE @pID INT;
SET @pID = 1;
/*If 2008+ for previous versions this needs to be two separate statements*/
DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11))
EXEC WriteLog
'Component',
'Source',
@string

TA貢獻1779條經(jīng)驗 獲得超6個贊
您不能對存儲過程的參數(shù)進行操作。您應(yīng)該在另一個變量上分配該值,然后將其傳遞給SP。
DECLARE @pID int, @nameId VARCHAR(100);
SET @pID = 1;
SET @nameId = 'Could not find given id: ' + CAST(@pID AS varchar);
EXEC WriteLog 'Component', 'Source', @nameId
- 3 回答
- 0 關(guān)注
- 703 瀏覽
添加回答
舉報