转换后的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
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
select count(*) into a?declare @a int;
select @a = count(*) from
学得不多啊,,我也是菜鸟,和LZ共同进步
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 这样的语句吗?如果可以怎么写?谢谢!