存储过程是要进行预编译的,它先会检查语法、再检查语义,如果出现错误了,就会提示你,有错,让你进行改正。 当语法和语义都正确时,存储过程开始执行,但是在执行过程中可能出现一些错误,比如数据溢出啊,截断字符串啊,该存储过程会继续执行,并执行结束。正确的语句会被执行,而错误的语句是不会执行的,并不会回滚的,如果要回滚的话,要自己添加数据回滚的代码才行。 顺便举个例子: declare @T table (text varchar(10)) declare @i int declare @str varchar(12) set @i = 12 set @str = 'abcdefghjklm' while @i > 0 begin set @str = substring(@str,1,@i) insert into @T values(@str) set @i = @i - 1 end select * from @T
调用的不是一个存储过程,上面是sp_pro1下面是sp_pro21