所以是。我有這個奇怪的問題。我有以下存儲過程存儲過程僅在管理工作室運行時更新
ALTER PROCEDURE [CP24SHOP].[sp_part_set_status_bulk]
@user nvarchar(max),
@doerTicket VARCHAR (200) = null,
@status int,
@items CP24SHOP.udt_parts READONLY
AS
BEGIN
SET NOCOUNT ON;
-- Check security
exec websocket.sp_validate_user
@user,
@doerTicket out
-- foreach row in @items, update the status
MERGE INTO [file].ItemPart WITH (XLOCK, ROWLOCK) AS target
USING (SELECT
item.GID
FROM @items AS item
) AS source
ON (target.GID = source.GID)
WHEN MATCHED THEN
UPDATE SET
target.[Status] = @status,
target.DateTimeModified = GETDATE();
select 'bob'
RETURN 0
END
;當我從Management Studio中使用此代碼
declare @user nvarchar(max) = 'websocket'
DECLARE @list CP24SHOP.udt_parts
INSERT INTO @list
(
GID
)
VALUES
(
-7228376
)
select [Status] from [file].ItemPart
where GID = -7228376
exec CP24SHOP.sp_part_set_status_bulk
@user = @user,
@items = @list,
@status = '155'
select [Status], DateTimeModified from [file].ItemPart
where GID = -7228376
運行它,它更新了status
沒有問題
但通過我們的WebSocket調用它時它運行該代碼並返回「bob」,因爲它應該,但是當我檢查數據庫時,該項目的狀態沒有更新。我很無知,可能是錯誤的
輕微彎路,而不是對問題的答案。但是你應該考慮不使用sp_前綴(或者甚至沒有更好的前綴)。 sp_前綴可能會導致性能問題以及其他一些隱藏的寶石。 http://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –
我沒有意識到這一點,非常感謝你在我的測試^^ –