2015-04-16 32 views
0

当我执行下面的存储过程,我得到这个错误:事务计数后EXECUTE指示BEGIN和COMMIT语句的不匹配数

System.Data.SqlClient.SqlException: Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.

代码:

create procedure [dbo].[sp_crm_diler_master] 
(
      @Fullname varchar(100), 
      @Email varchar(50), 
      @Mobile varchar(12), 
      @qualification varchar(50), 
      @presentaddress varchar(250), 
      @permanentaddress varchar(250), 
      @location varchar(50), 
      @skills varchar(100), 
      @Dob varchar(15), 
      @myphoto varbinary(Max), 
      @uniqueid varchar(25), 
      @Message varchar(150) output 
) 
AS 
BEGIN 
if not exists (select emailid,phone from crm_masterdata where [email protected] And [email protected]) 
    begin 
begin transaction 
declare @small smalldatetime = (select CAST(@Dob as smalldatetime)) 
declare @todaydate datetime=(select getdate()) 
    insert into crm_masterdata(uniqueid,fullname,phone,dob,photo,emailid,qualification,location,present_address,permanent_address,skillsets,datasource,entrydate,active) 
values(@uniqueid,@Fullname,@Mobile,@small,@myphoto,@Email,@qualification,@location,@presentaddress,@permanentaddress,@skills,'reception',@todaydate,1) 
Set @Message=' Registration Successfull,Please Login' 
end 
else 
begin 
    set @Message='This User Already Registered' 
    end 
    end 

哪里是我的错误?

+0

您的C#和asp.net代码不相关。你的问题很严重在你的SP上。 – Claudio

+0

我已删除问题的不相关部分 –

+0

您是否阅读过错误?你是否在代码中搜索提交语句? –

回答

1
create procedure [dbo].[sp_crm_diler_master] 
(
@Fullname  varchar(100), 
@Email   varchar(50), 
@Mobile   varchar(12), 
@qualification varchar(50), 
@presentaddress varchar(250), 
@permanentaddress varchar(250), 
@location  varchar(50), 
@skills   varchar(100), 
@Dob   varchar(15), 
@myphoto  varbinary(Max), 
@uniqueid  varchar(25), 
@Message  varchar(150) output 
) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    declare @small smalldatetime = (select CAST(@Dob as smalldatetime)); 
    declare @todaydate datetime=getdate(); 
    declare @Error INT; 

BEGIN TRANSACTION; --<-- You need to commit it 
    IF not exists (select 1 from crm_masterdata where [email protected] And [email protected]) 
     BEGIN 
      insert into crm_masterdata(uniqueid,fullname,phone,dob,photo,emailid 
        ,qualification,location,present_address,permanent_address,skillsets,datasource,entrydate,active) 
      values(@uniqueid,@Fullname,@Mobile,@small,@myphoto,@Email,@qualification 
         ,@location,@presentaddress,@permanentaddress,@skills,'reception',@todaydate,1) 

      SET @Error = @@ERROR; 
      Set @Message =' Registration Successfull,Please Login' 
     END 
    ELSE 
     BEGIN 
      SET @Message='This User Already Registered' 
     END 

    IF (@Error = 0) 
     COMMIT TRANSACTION; --<-- Commit tran 
    ELSE 
     ROLLBACK TRANSACTION; 

END 
0

我没有看到与您的BEGIN TRANSACTION匹配的COMMIT TRANSACTION。

相关问题