我在查询分析器中用“服务器跟踪”查看没有继续执行呢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

解决方案 »

  1.   

    我在查询分析器中用“服务器跟踪”查看没有继续执行呢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
    你好 我发现跟我启用出错中断标志有关
    set xact_abort on
    请问这是怎么回事
      

  2.   

    我在查询分析器中用“服务器跟踪”查看没有继续执行呢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
    你好 我发现跟我启用出错中断标志有关
    set xact_abort on
    请问这是怎么回事
      

  3.   

    我在查询分析器中用“服务器跟踪”查看没有继续执行呢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
    你好 我发现跟我启用出错中断标志有关
    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
      

  4.   

    我在《查询分析器》下调用 确实没有执行后面的语句
    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
      

  5.   

    我在查询分析器中用“服务器跟踪”查看没有继续执行呢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
    你好 我发现跟我启用出错中断标志有关
    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
      

  6.   

    SET XACT_ABORT ON 开启以后 是只要出现错误就回滚。当然不可以输出结果了
      

  7.   

    我在查询分析器中用“服务器跟踪”查看没有继续执行呢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
    你好 我发现跟我启用出错中断标志有关
    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'--这个肯定可以走下来的
      

  8.   

    我在查询分析器中用“服务器跟踪”查看没有继续执行呢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
    你好 我发现跟我启用出错中断标志有关
    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怎么办