2016-03-11 45 views
1

這裏是我的代碼:如何在throw語句中插入變量的值?

CREATE PROCEDURE [dbo].[get_test_status] 
    @TestStatusId INT OUTPUT, 
    @UserTestId INT, 
    @UserId  INT 
AS 
    SELECT * FROM UserTest WHERE UserTestId = @UserTestId; 
    IF (@@ROWCOUNT != 1) 
     THROW 50004,'User Test' + @UserTestId + 'Could not find an existing test to start',1 

我得到一個語法錯誤在罰球線。有人可以給我一些建議嗎?

+1

在'THROW'之前建立字符串然後使用它。 DECLARE @Message VARCHAR(300)= CONCAT('User Test',@ UserTestId,'找不到現有的測試啓動'); THROW 50004,@ Message,1' – ughai

+0

@ughai - 這工作很好。你可以添加一個答案。謝謝你 – Alan2

+0

你已經有一個類似於我的評論的答案。你可以標記它 – ughai

回答

1

嘗試聲明一個nvarchar變量,然後存儲你想要的文本並使用它。

Eg : Declare @msg nvarchar(200) 
set @msg = 'User Test' + @UserTestId + 'Could not find an existing test to start' 
THROW 50004,@msg,1 
1

THROW

throw語句不允許在消息參數替代參數,該消息參數不接受printf樣式格式。

See Example C from the link. 
相關問題