好久没见你回答问题了,看来最近你有点忙!
看你的问题有点像遍历二叉树,返回不对就说明abcd中至少有一个错误,
那么你就建立一个特定的树来做测试,
分别测试:
a-b
a-b-c
a-b-d
a-b-c-d
这种,就知道是哪一个存储过程出错了
我再逐步调试下。
你让数据库服务器情何以堪。。。好麻烦好复杂, 干嘛要这么搞, 头大了吧?
不过, 嵌套调用, 只要正确调用了, 指定了output, 应该没什么问题。
你可以新建一张日志表。 将失败的语句,参数等记录一下。
我之前做过的,代码片段:
SET @mSQLStmt = 'EXEC dbo.usp_do_TaskFinish @mHospitalId = ' + CAST(@mHospitalId AS varchar(10)) + ',@mTaskId = ' + CAST(@mTaskId AS varchar(10)) + ',@mCardNo = ' + CASE WHEN @mCardNo IS NULL THEN 'null' ELSE '''' + @mCardNo + '''' END + ',@mTaskEndTime = ' + CONVERT(varchar(19),@mTaskEndTime,120) + ',@mReturnMSG OUTPUT' SELECT @mPathId = IP.PathId FROM dbo.tbl_Tasks_Info T INNER JOIN dbo.tbl_ItemPaths_Info IP ON T.RelationId = IP.RelationId WHERE T.TaskId = @mTaskId AND T.HospitalId = @mHospitalId AND T.TaskStatus = 3 IF (@mPathId IS NULL) BEGIN SET @mReturnMSG = '任务完成确认失败【任务信息错误】' INSERT INTO dbo.tbl_Operatelog_Info(logTime,SQLStmt,ReturnValue,ReturnMSG,Flag) VALUES (getdate(),@mSQLStmt,-1,@mReturnMSG,4) --插入日志表 RETURN -1 END
你这个测试了,给定义了输出参数,结果还是这样。