在SYBASE ASE 12.5中获取ROWCOUNT系统过程

时间:2017-07-14 16:28:35

标签: database tsql sybase-ase system-procedures

我需要检查另一个程序中的命名事务,以确保它没有被其他任何人执行。

但对于这个问题,我正在尝试利用系统程序

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'

我尝试使用@@ RowCount,但它总是返回1

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

1 个答案:

答案 0 :(得分:1)

虽然你可以创建一个代理表包装器来调用sp_transactions,然后运行select * from <proxy> / select @@rowcount ......这可能会对你想要的东西有点过分/过度。

相反,我建议您查看sp_transactions的源代码(提示:它从master..systransactions提取事务数据)并滚动您自己的代码,提供您想要知道的内容。