2017-10-13 111 views
0

我下面的代码,但它给出了一个错误,请指导我如何嵌套if..begin..begin__tran__Rollback或承诺If..begin..begin tran..Rollback

declare @acname as varchar(max), 
    @gstcount as int 

set @acname='Party1' 

use TESTDB 

set @gstcount = (select count(GSTIN) from M_STATEWISEGSTINACTAG where GSTIN<>'UNREGISTERED' AND ACCD= 
(select accd from m_ledger where descr LIKE @acname)) 


if @gstcount = 1 
    begin 
    --multiple select statments 
    select ....... 
    --to display require info. 
    end 

--Then Update Values 
    begin tran; 
     update M_tbl ........where.... 

    --Show result with updated value 
     select * from M_tbl........where......... 

    --Undo Changes 
     ROLLBACK; 
else 
begin 
     SELECT ........reuqir info 

end; 

在此脚本我得到一个错误'关键字'else'附近的语法不正确。

+0

我检查与终端,终端;,年底陈德良,结束TRAN;它仍然给我一个相同的行号错误 –

回答

0

试试这个:

DECLARE @acname AS VARCHAR(MAX), @gstcount AS INT; 
SET @acname = 'Party1'; 
USE TESTDB; 
SET @gstcount = 
(
    SELECT COUNT(GSTIN) 
    FROM M_STATEWISEGSTINACTAG 
    WHERE GSTIN <> 'UNREGISTERED' AND ACCD =(SELECT accd FROM m_ledger WHERE descr LIKE @acname) 
); 
IF @gstcount = 1 
    BEGIN 
     BEGIN 
    --multiple select statments 

      SELECT ....... 
    --to display require info. 
     END; 

--Then Update Values 
     BEGIN TRAN; 
      update M_tbl ........where.... 
    --Show result with updated value 
      select * from M_tbl........where......... 
    --Undo Changes 
     ROLLBACK TRAN; 
    END; 
    ELSE 
    BEGIN 
     SELECT........reuqir info; 
    END;