Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql server 2008中打印_Sql_Sql Server - Fatal编程技术网

在sql server 2008中打印

在sql server 2008中打印,sql,sql-server,Sql,Sql Server,在事务中,我要打印一条错误消息。我的问题是,即使没有错误,我仍然在屏幕上打印一个。我怎么修理它? 包含打印语句的事务: begin tran update_products_and_machine IF EXISTS ( select* from TblMachine where tblMachine.machineNumber = @machineNum and tblMachine.i

在事务中,我要打印一条错误消息。我的问题是,即使没有错误,我仍然在屏幕上打印一个。我怎么修理它? 包含打印语句的事务:

begin tran update_products_and_machine
IF  EXISTS (

                select*  
                from TblMachine  
                where tblMachine.machineNumber = @machineNum and tblMachine.isworking='true')
and  EXISTS  (
                select TblProduct.productNumber 
                from TblProduct 
                where TblProduct.productNumber = @ProductNum)

and not exists (select TblProduces.machineNumber, TblProduces.productNumber from TblProduces where TblProduces.productNumber=@productNum
and TblProduces.machineNumber=@machineNum)

 begin
insert into TblProduces(productNumber, machineNumber) values (@productNum,@machineNum)
end
if @@ERROR <>0 begin
rollback tran
end
commit tran update_products_and_machine
on_error: Print 'ERROR';
如果您试图在事务在插入时失败时打印错误,则第二个If需要位于第一个If的块内,因为第一个If是是否存在某些内容,而不是是否存在错误。如果在表中找不到任何内容,是否会出现错误?不,鉴于:

BEGIN TRAN update_products_and_machine
IF  EXISTS (

            select*  
            from TblMachine  
            where tblMachine.machineNumber = @machineNum and 
tblMachine.isworking='true')
and  EXISTS  (
            select TblProduct.productNumber 
            from TblProduct 
            where TblProduct.productNumber = @ProductNum)

and not exists (select TblProduces.machineNumber, TblProduces.productNumber from  
TblProduces where TblProduces.productNumber=@productNum
and TblProduces.machineNumber=@machineNum)

BEGIN
insert into TblProduces(productNumber, machineNumber) values (@productNum,@machineNum)
     IF @@ERROR <> 0 
     BEGIN
          rollback tran
          Print 'ERROR';
     END
END

COMMIT TRAN update_products_and_machine

如果插入失败,这将导致错误。如果第一个块中的两个项目没有找到,它们正在查找是否存在,如果不存在,这是一个错误-这是一个已完成的事务,没有找到任何内容?

您需要将打印移到If@@error 0 begin行下您应该能够在回滚传输后移动打印“error”。Jeff/Jimbo,当我按照您的建议执行时,我根本没有收到错误消息,即使有错误Hey Dustin,这个解决方案在有错误时不会打印错误,它所做的只是打印:命令已成功完成您是在解析查询还是在执行查询?您使用的是什么版本的sql?我运行了查询并获得了Sql 2008的预期结果。请尝试运行以下操作:如果@@ERROR 0开始打印“ERROR”;Print@@ERROR end Print“无错误”在将导致错误的语句开头添加一行。它应该可以工作这应该可以工作…只需复制和粘贴:causeError if@@ERROR 0开始打印“ERROR”;终止
BEGIN TRAN update_products_and_machine
IF  EXISTS (

            select*  
            from TblMachine  
            where tblMachine.machineNumber = @machineNum and 
tblMachine.isworking='true')
and  EXISTS  (
            select TblProduct.productNumber 
            from TblProduct 
            where TblProduct.productNumber = @ProductNum)

and not exists (select TblProduces.machineNumber, TblProduces.productNumber from  
TblProduces where TblProduces.productNumber=@productNum
and TblProduces.machineNumber=@machineNum)

BEGIN
insert into TblProduces(productNumber, machineNumber) values (@productNum,@machineNum)
     IF @@ERROR <> 0 
     BEGIN
          rollback tran
          Print 'ERROR';
     END
END

COMMIT TRAN update_products_and_machine