转换后的MySQL代码:
delimiter //
CREATE PROCEDURE del_user(param1 varchar(10),param2 varchar(40),out param3 tinyint)declare a int;
select count(*) into a from e_user where ur_user_id=param1;
        if a=0 then
           begin
              set param3=2;
      return;
    end;begin transaction
begindeclare flag1,flag2,flag3 int; delete from e_user where ur_user_id=param1;
set @flag1=@@error;
delete from e_user_fun where uf_user_id=param1;
set @flag2=@@error;
             insert into e_tran_log values(getdate(),'SYS_USER and SYS_USER_FUN',param2,'Delete','Delete SYS User :'+param1);
             set @flag3=@@error; if @flag1=0 and @flag2=0 and @flag3=0 then
begin
commit transaction;
set param3=1;
return;
end;

rollback transaction;
set param3=0;
return;
end;
//Error 1064<42000>:you have an error in your sql syntax;check the manual that
corresponds to your mysql server version for the right syntax to use near 
'declare a int;
select count(*) into a from e_user where ur_user_id=param1;
-----------------------
我在MS SQL 中的代码如下:
CREATE PROCEDURE dbo.del_user 
@user_id varchar(10),
@user varchar(40),
@result tinyint output
AS
declare @exist int
select @exist=count(*) from e_user where ur_user_id=@user_id
             if @exist=0
    begin
set @result=2
return
    enddeclare @flag1 int,@flag2 int,@flag3 intbegin transaction
begin
delete from e_user where ur_user_id=@user_id
set @flag1=@@error
delete from e_user_fun where uf_user_id=@user_id
set @flag2=@@error
             insert into e_tran_log values(getdate(),'SYS_USER and SYS_USER_FUN',@user,'Delete','Delete SYS User :'+@user_id)
             set @flag3=@@error if @flag1=0 and @flag2=0 and @flag3=0
begin
commit transaction
set @result=1
return
end

rollback transaction
set @result=0
return
end
GO一直运行都没问题,请大侠们帮忙修改MYSQL 中的代码,谢谢!
'at line 2

解决方案 »

  1.   

    declare a int;
    select count(*) into a?declare @a int;
    select @a = count(*) from 
    学得不多啊,,我也是菜鸟,和LZ共同进步
      

  2.   

    我看了看 Mysql的语法,好像就是用 select into 这样的语句来赋值的
      

  3.   

    我自己修改成以下的语句,就可以通过了:CREATE PROCEDURE del_user(userid varchar(10),username varchar(40),out a int)begindeclare exist int;
    select count(*) into exist from e_user where ur_user_id=userid;
    if exist=0 then
     begin
     set a=2;
     end;
    else
       begin
         
         delete from e_user where ur_user_id=userid;
       delete from e_user_fun where uf_user_id=userid;
         insert into e_tran_log values(getdate(),'SYS_USER and SYS_USER_FUN',username,'Delete','Delete SYS User :'+userid);    set a=1;   end;
    end if;
    end但是还有一个问题,当我插入一条记录到一个表e_tran_log中,表的第一列是 一个自动生成的序列好,这里'insert into '语句我该怎么写呢?另外,mysql 有事务处理功能吗?就是说它可以 执行 commit transaction/rollback transaction 这样的语句吗?如果可以怎么写?谢谢!