目前要把sql server的数据导入到mysql 发现sql server的存储过程啦函数不能导的,语法有出入。要自己重新编写这些过程和函数了。如现在有个sql server 存储过程(就简单的确认用户重复),
ALTER PROCEDURE [dbo].[pro_check_member_reg]
@strName varchar(16), -- 用户名
@Flag int output -- 返回值
AS
BEGIN
SET NOCOUNT ON; IF EXISTS(SELECT 1 FROM t_member_basic(NOLOCk) WHERE user_name=@strName)
BEGIN
SET @Flag=-1002 -- 此帐号名已被注册,请换另一帐号名字尝试再次注册
RETURN
END
END查看些资料,第一次写mysql的过程。CREATE pro_check_member_reg(in in_strName varchar(16),out out_Flag INT )
BEGIN
DECLARE u_num INT;
SELECT COUNT(*) INTO u_num FROM t_member_basic WHERE t_member_basic.user_name=in_strName;
IF u_num<>0 THENSELECT -1002 into out_Flag; -- 此帐号名已被注册,请换另一帐号名字尝试再次注册END IF;END提示错误:1064~~
各位mysql的前辈,求指导
或者有没有什么办法,把mysql 的存储过程一次转变为mysql的过程。MySQLSQL Server存储
ALTER PROCEDURE [dbo].[pro_check_member_reg]
@strName varchar(16), -- 用户名
@Flag int output -- 返回值
AS
BEGIN
SET NOCOUNT ON; IF EXISTS(SELECT 1 FROM t_member_basic(NOLOCk) WHERE user_name=@strName)
BEGIN
SET @Flag=-1002 -- 此帐号名已被注册,请换另一帐号名字尝试再次注册
RETURN
END
END查看些资料,第一次写mysql的过程。CREATE pro_check_member_reg(in in_strName varchar(16),out out_Flag INT )
BEGIN
DECLARE u_num INT;
SELECT COUNT(*) INTO u_num FROM t_member_basic WHERE t_member_basic.user_name=in_strName;
IF u_num<>0 THENSELECT -1002 into out_Flag; -- 此帐号名已被注册,请换另一帐号名字尝试再次注册END IF;END提示错误:1064~~
各位mysql的前辈,求指导
或者有没有什么办法,把mysql 的存储过程一次转变为mysql的过程。MySQLSQL Server存储
BEGIN
DECLARE u_num INT;
SELECT COUNT(*) INTO u_num FROM t_member_basic WHERE t_member_basic.user_name=in_strName;
IF u_num!=0 THEN
SELECT -1002 into out_Flag; -- 此帐号名已被注册,请换另一帐号名字尝试再次注册
END IF;
END
另外提问时建议把完整的错误信息复制出来,一般来说错误提示中会有详细的提示。
BEGIN
DECLARE u_num INT;
[Err] 1064 - 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 'pro_check_member_reg(in in_strName varchar(16),out out_Flag INT )
BEGIN
DECLAR' at line 1
错误信息
CREATE pro_check_member_reg(in in_strName varchar(16),out out_Flag INT )
BEGIN
DECLARE u_num INT;
SELECT COUNT(*) INTO u_num FROM t_member_basic WHERE t_member_basic.user_name=in_strName;
IF u_num<>=0 THEN
SELECT -1002 into out_Flag; -- 此帐号名已被注册,请换另一帐号名字尝试再次注册
END IF;
END$$
delimiter ;
CREATE procedure pro_check_member_reg(in in_strName varchar(16),out out_Flag INT )
BEGIN
DECLARE u_num INT;
SELECT COUNT(*) INTO u_num FROM t_member_basic WHERE t_member_basic.user_name=in_strName;
IF u_num<>=0 THEN
SELECT -1002 into out_Flag; -- 此帐号名已被注册,请换另一帐号名字尝试再次注册
END IF;
END$$
delimiter ;
如果是函数的话,想返回一个结果集,table类,你那边有没有这个返回table结果集的实例吗?
现在想测试这个过程了。
CALL pro_check_member_reg('wucj2008me');错误提示:
[SQL] CALL pro_check_member_reg('wucj2008me');
[Err] 1318 - Incorrect number of arguments for PROCEDURE jfgame.pro_check_member_reg; expected 2, got 1
参数不对。out也要加上去。
再来一次:
CALL pro_check_member_reg('wucj2008me',0);
错误提示:
[SQL] CALL pro_check_member_reg('wucj2008me',0);
[Err] 1414 - OUT or INOUT argument 2 for routine jfgame.pro_check_member_reg is not a variable or NEW pseudo-variable in BEFORE trigger
help~~~~~
select @a;
谢谢版主的帮助。那个,不知道版主大人那边有没有mysql 的中文使用手册。有的话,能发我一份不,发现网上的mysql中文使用手册都是要积分什么的下载的。
自己下吧