2017-07-14 84 views
0

我需要檢查另一個過程中的指定事務以確保其他任何人都沒有執行該過程。在SYBASE ASE 12.5中獲取系統過程的ROWCOUNT

但對於這個問題,我試圖利用一個系統過程

EXEC sp_transactions 'xid','MyTran1' -- This will return a result if it finds a named transaction called MyTran1 

我想知道,如果它返回一個排......按照RowsReturned> 1

所以我做了以下

BEGIN TRAN MyTran1 -- named transaction 
BEGIN TRAN MyTran2 -- named transaction 

如果我跑EXEC sp_transactions 2行返回

如果我るñEXEC sp_transactions 'xid','MyTran1' - 一行返回

現在我需要做的是這樣

DECLARE @nameTranFound int 
SET @nameTranFound = EXEC sp_transactions 'xid','MyTran1' 

我嘗試使用@@行數,但它總是返回1

EXEC sp_transactions 'xid','Warren1' 
SELECT @@RowCount 

回答

1

雖然你可以創建一個代理用於呼叫sp_transactions的桌面包裝,然後運行select * from <proxy>/select @@rowcount ...這可能會對你想要的東西有點激烈/矯枉過正。我建議你看看sp_transactions(提示:它從master..systransactions中提取交易數據)的源代碼,並推出你自己的代碼,它提供了你想知道的內容。

+0

是啊,我是傾向於滾動我自己 - 只是想盡量避免... :( 這使我對SP的文本:sp_helptext的sp_transactions將 所以這是可行的,如果沒有其他的土地我會的。將其標記爲答案 –