我在查询分析器中用“服务器跟踪”查看没有继续执行呢CREATE TABLE #T(ID INT)
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
你好 我发现跟我启用出错中断标志有关
set xact_abort on
请问这是怎么回事
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
你好 我发现跟我启用出错中断标志有关
set xact_abort on
请问这是怎么回事
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
你好 我发现跟我启用出错中断标志有关
set xact_abort on
请问这是怎么回事
这个选项开了就是出错就回滚,不管严重级别
set xact_abort on
CREATE TABLE #T(ID INT)
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMIT
go
SELECT *
from #tDROP TABLE #T
declare @Ret int
exec @Ret=updatemyinfo 0,0,'信息'
print '123'服务器: 消息 2627,级别 14,状态 1,过程 Updatemyinfo,行 13
违反了 PRIMARY KEY 约束 'PK_my_info'。不能在对象 'PK_my_info' 中插入重复键。没有输出print '123'
的123
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
你好 我发现跟我启用出错中断标志有关
set xact_abort on
请问这是怎么回事
这个选项开了就是出错就回滚,不管严重级别
set xact_abort on
CREATE TABLE #T(ID INT)
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMIT
go
SELECT *
from #tDROP TABLE #T
我在《查询分析器》下调用 确实没有执行后面的语句
declare @Ret int
exec @Ret=updatemyinfo 0,0,'信息'
print '123'服务器: 消息 2627,级别 14,状态 1,过程 Updatemyinfo,行 13
违反了 PRIMARY KEY 约束 'PK_my_info'。不能在对象 'PK_my_info' 中插入重复键。没有输出print '123'
的123
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
你好 我发现跟我启用出错中断标志有关
set xact_abort on
请问这是怎么回事
这个选项开了就是出错就回滚,不管严重级别
set xact_abort on
CREATE TABLE #T(ID INT)
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMIT
go
SELECT *
from #tDROP TABLE #T
我在《查询分析器》下调用 确实没有执行后面的语句
declare @Ret int
exec @Ret=updatemyinfo 0,0,'信息'
print '123'服务器: 消息 2627,级别 14,状态 1,过程 Updatemyinfo,行 13
违反了 PRIMARY KEY 约束 'PK_my_info'。不能在对象 'PK_my_info' 中插入重复键。没有输出print '123'
的123
你在存储过程中没有做异常处理
程序运行到存储过程哪里被打断了,相当于程序“走投五路”
加上异常处理的慢,即便是发生了异常,对于程序来说,他是有路可走的,不是不处理异常,造成程序“五无路可走”
你试试
alter PROCEDURE [dbo].[UpdateMyInfo]
@Optype int,--0 新增 1修改 2删除
@No int,
@Name varchar(50)
AS
declare @Ret int
set @Ret=-1
if @Optype=0
begin
set xact_abort on
begin try
begin tran
insert into myinfo([Name]) values(@Name)
set @Ret=0
commit
end try
begin catch
rollback
end catch
end
return @Ret再来declare @Ret int
exec @Ret=updatemyinfo 0,0,'信息'--传递一个插入不成功的参数
print '123'--这个肯定可以走下来的
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMITSELECT *
from #tDROP TABLE #T
你好 我发现跟我启用出错中断标志有关
set xact_abort on
请问这是怎么回事
这个选项开了就是出错就回滚,不管严重级别
set xact_abort on
CREATE TABLE #T(ID INT)
BEGIN TRAN
insert into #t
select 2
INSERT INTO #T
SELECT 1/0
insert into #t
select 3
PRINT 'A'
COMMIT
go
SELECT *
from #tDROP TABLE #T
我在《查询分析器》下调用 确实没有执行后面的语句
declare @Ret int
exec @Ret=updatemyinfo 0,0,'信息'
print '123'服务器: 消息 2627,级别 14,状态 1,过程 Updatemyinfo,行 13
违反了 PRIMARY KEY 约束 'PK_my_info'。不能在对象 'PK_my_info' 中插入重复键。没有输出print '123'
的123
你在存储过程中没有做异常处理
程序运行到存储过程哪里被打断了,相当于程序“走投五路”
加上异常处理的慢,即便是发生了异常,对于程序来说,他是有路可走的,不是不处理异常,造成程序“五无路可走”
你试试
alter PROCEDURE [dbo].[UpdateMyInfo]
@Optype int,--0 新增 1修改 2删除
@No int,
@Name varchar(50)
AS
declare @Ret int
set @Ret=-1
if @Optype=0
begin
set xact_abort on
begin try
begin tran
insert into myinfo([Name]) values(@Name)
set @Ret=0
commit
end try
begin catch
rollback
end catch
end
return @Ret再来declare @Ret int
exec @Ret=updatemyinfo 0,0,'信息'--传递一个插入不成功的参数
print '123'--这个肯定可以走下来的
谢谢 sql2000不支持trycatch怎么办