CREATE PROCEDURE [dbo].[DreamVox_AddCallDirect]
@CALL_DIRECT int,
@CALL_DIRECT_DESC varchar(50)
AS
if(exists(select * from CallDirect where CALL_DIRECT=@CALL_DIRECT or CALL_DIRECT_DESC=@CALL_DIRECT_DESC))
begin
return 1
end
else
begin insert into CallDirect(CALL_DIRECT,CALL_DIRECT_DESC)
values(@CALL_DIRECT,@CALL_DIRECT_DESC)
end
GO
上面的是sql server的存储过程,怎样将它转到mysql里啊?
我试了,if()里的函数有语法问题?不知道该怎么处理!
@CALL_DIRECT int,
@CALL_DIRECT_DESC varchar(50)
AS
if(exists(select * from CallDirect where CALL_DIRECT=@CALL_DIRECT or CALL_DIRECT_DESC=@CALL_DIRECT_DESC))
begin
return 1
end
else
begin insert into CallDirect(CALL_DIRECT,CALL_DIRECT_DESC)
values(@CALL_DIRECT,@CALL_DIRECT_DESC)
end
GO
上面的是sql server的存储过程,怎样将它转到mysql里啊?
我试了,if()里的函数有语法问题?不知道该怎么处理!
------------
@CALL_DIRECT int,
@CALL_DIRECT_DESC varchar(50) 这些东西写在参数里的,(IN CALL_DIRECT INTEGER(11), IN CALL_DIRECT_DESC VARCHAR(50))
----------
if语句应该没问题的,使用参数不用加@的,在mysql里
CREATE PROCEDURE `ccdb`.`DreamVox_AddCallDirect` (IN p_CALL_DIRECT INTEGER(11),IN p_CALL_DIRECT_DESC VARCHAR(50))if (not exists(select * from CallDirect where CALL_DIRECT=p_CALL_DIRECT or CALL_DIRECT_DESC=p_CALL_DIRECT_DESC)) then insert into CallDirect(CALL_DIRECT,CALL_DIRECT_DESC) values(p_CALL_DIRECT,p_CALL_DIRECT_DESC)end if
如果不需要return的话改成上面的,帮我看看还有错误吗?
谢谢
delimiter ||
CREATE PROCEDURE `DreamVox_AddCallDirect`
(
INT F_CALL_DIRECT int, IN F_CALL_DIRECT_DESC varchar(50)
)
begin
declare cnt int default 0;
select count(*) from CallDirect where CALL_DIRECT = F_CALL_DIRECT or CALL_DIRECT_DESC = F_CALL_DIRECT_DESC into cnt;
if cnt > 0 then
select 1;
else
insert into CallDirect(CALL_DIRECT,CALL_DIRECT_DESC)
values(@CALL_DIRECT,@CALL_DIRECT_DESC)
end if;
end||
delimiter ;