问题求解,欢迎一起来讨论
使用NORTHWIND数据库
CREATE PROCEDURE inner_sp @productid int AS
CREATE TABLE #temp (orderid int NOT NULL,
orderdate datetime NOT NULL)
PRINT 'This prints.'
BEGIN TRANSACTION
INSERT #temp (orderid, orderdate)
SELECT o.OrderID, o.OrderDate
FROM Orders
WHERE EXISTS (SELECT *
FROM [Order Details] od
WHERE od.OrderID = o.OrderID
AND od.ProductID = @productid)
COMMIT TRANSACTION
PRINT 'This does not print.'
go
CREATE PROCEDURE outer_sp AS
DECLARE @ret int
SET @ret = 4711
EXEC @ret = inner_sp 76
PRINT '@@error is ' + ltrim(str(@@error)) + '.'
PRINT '@@trancount is ' + ltrim(str(@@trancount)) + '.'
PRINT '@ret ' + coalesce(ltrim(str(@ret)), 'NULL') + '.'
IF @@trancount > 0 ROLLBACK TRANSACTION
go
EXEC outer_sp
go
This prints.
服务器: 消息 266,级别 16,状态 2,过程 inner_sp,行 22
EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 0,当前计数 = 1。
服务器: 消息 107,级别 16,状态 1,过程 inner_sp,行 13
列前缀 'o' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,过程 inner_sp,行 13
列前缀 'o' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,过程 inner_sp,行 13
列前缀 'o' 与查询中所用的表名或别名不匹配。
@@error is 266.
@@trancount is 1.
服务器: 消息 266,级别 16,状态 2,过程 outer_sp,行 9
EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 0,当前计数 = 1。
@ret 4711.
谁来解释一下