CREATE PROCEDURE [dbo].[mp_insert] 
AS
declare @sYear nchar(4)
declare @sMonth nchar(2)
declare @sDate nchar(7)
delete from table1set @sMonth=right('00' + convert(nchar(2),month(getdate())),2)
set @sYear=convert(nchar(4),year(getdate()))
set @sDate=@sYear + '/' + @sMonthif @sMonth='01' 
begin 
    if exists(select * from table2 where ....)endGO
以上语句居然报错:Error156: Incorrent syntax near the keyword 'end'.
请问大家,问题出在哪里了?

解决方案 »

  1.   

    begin 
        if exists(select * from table2 where ....)end
    最后这块
    if判断下面没有语句begin 
        if exists(select * from table2 where ....)
        .....
    end
      

  2.   

    CREATE PROCEDURE [dbo].[mp_insert] 
    AS
    begin--要有好习惯declare @sYear nchar(4)
    declare @sMonth nchar(2)
    declare @sDate nchar(7)
    delete from table1set @sMonth=right('00' + convert(nchar(2),month(getdate())),2)
    set @sYear=convert(nchar(4),year(getdate()))
    set @sDate=@sYear + '/' + @sMonthif @sMonth='01' 
    begin 
        if exists(select * from table2 where ....)end
    end --要有好习惯
    GO
      

  3.   

    CREATE PROCEDURE [dbo].[mp_insert] 
    AS
    declare @sYear nchar(4)
    declare @sMonth nchar(2)
    declare @sDate nchar(7)
    delete from table1set @sMonth=right('00' + convert(nchar(2),month(getdate())),2)
    set @sYear=convert(nchar(4),year(getdate()))
    set @sDate=@sYear + '/' + @sMonthif @sMonth='01' 
    begin 
        if exists(select * from table2 )
        print 1--指定
     else 
    print 2end
      

  4.   

    CREATE PROCEDURE [dbo].[mp_insert] 
    AS
    declare @sYear nchar(4)
    declare @sMonth nchar(2)
    declare @sDate nchar(7)
    delete from table1set @sMonth=right('00' + convert(nchar(2),month(getdate())),2)
    set @sYear=convert(nchar(4),year(getdate()))
    set @sDate=@sYear + '/' + @sMonthif @sMonth='01' 
    begin 
        if exists(select * from table2 where ....)
    ---在这里
       begin
       endendGO
    以上语句居然报错:Error156: Incorrent syntax near the keyword 'end'.
    请问大家,问题出在哪里了?
      

  5.   

    同意roy_88(中国风_燃烧你的激情!!!) 的写法
      

  6.   

    begin 
        if exists(select * from table2 where ....)end
    在这句的if语句的条件的西面必须要有处理语句,如果没有语句就要报错!
    实在不想有处理语句,就象上面人说的用一条print语句或者Rollback transaction语句吧!
    多行语句在执行体中必须要在begin...end中间.
    注意一下语法就好了,
    谢谢先~~~