我发现在SP1执行时SP2不会从SP1内执行。
以下是SP1的结构:
ALTER PROCEDURE SP1 AS BEGIN
Declare c1 cursor....
open c1 fetch next from c1 ...
while @@fetch_status = 0 Begin
...
Fetch Next from c1 end
close c1
deallocate c1
exec sp2
end
如果在“输出窗口”为空的情况下在SQL Server 2005管理工作室的“输出窗口”中打印PRINT语句输出,则看不到它们。
答案 0 :(得分:3)
如果您将存储过程代码作为单个查询运行会发生什么?如果你在exec之前和之后放了PRINT
语句,你会看到两个输出吗?
答案 1 :(得分:0)
我不确定它是否对您有所帮助,但根据我的经验,最常见的原因是:
sp2
获取一些使其成为null
值的参数 - 即您从字符串中构建其名称,其中一个是null
。sp2
内部有一些条件且没有一个是真的,因此sp2
根本不执行代码 - 即其中一个参数是类型varchar
,您传递值{{ 1}},在里面检查它,但传递给VALUE
的实际值是sp2
(因为没有定义varchar长度)。V
根据参数构建查询,其中一个参数为sp2
,整个查询也变为null
。如果您在之前将<{1}} 放在之后 {em> 之后,您是否看到任何输出?
答案 2 :(得分:0)
你可以使用@@ error来查看执行前一个语句时是否有错误。