drop PROCEDURE if exists test;
CREATE PROCEDURE test(
UserName varchar(40),
out ErrInfo    varchar(40),
out retCode int
)
begin set retCode=1;
if exists(select MemberID from tblmember where `username`=UserName) then
set ErrInfo='该用户名已经被注册过了!!';
set retCode=-1;
end if; select retCode,ErrInfo,UserName;
end然后我调用的时候call test('frank00',@a, @b); 明明库里没有,但还是赋值为已存在,有谁能帮我分析测试下吗?下面是表结构跟数据SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tblmember
-- ----------------------------
DROP TABLE IF EXISTS `tblmember`;
CREATE TABLE `tblmember` (
  `MemberID` int(11) NOT NULL AUTO_INCREMENT COMMENT '下级推广员ID',
  `parentId` int(11) NOT NULL,
  `UserName` varchar(30) NOT NULL,
  `UserType` tinyint(4) NOT NULL,
  `TrueName` varchar(30) NOT NULL,
  `TK_Password` varchar(30) DEFAULT NULL,
  `CardNo` varchar(20) DEFAULT NULL,
  `CardPic` varchar(50) DEFAULT NULL,
  `Email` varchar(60) DEFAULT NULL,
  `Phone` varchar(20) DEFAULT NULL,
  `Balance` double(10,4) DEFAULT NULL,
  `State` tinyint(4) DEFAULT NULL,
  `CreateTime` datetime DEFAULT NULL,
  `BankName` varchar(20) DEFAULT NULL,
  `BankCardNo` varchar(20) DEFAULT NULL,
  `BankUserName` varchar(15) DEFAULT NULL,
  `BankSubName` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`MemberID`),
  KEY `UserName` (`UserName`),
  KEY `parentId` (`parentId`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='下级推广员ID';-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `tblmember` VALUES ('1', '0', 'test', '0', 'test', '123', null, null, null, null, '0.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('2', '1', 'test2', '0', 'test', '123', null, null, null, null, '0.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('3', '2', 'test3', '0', 'test', '123', null, null, null, null, '0.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('4', '3', 'test4', '0', 'test', '123', null, null, null, null, '0.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('5', '4', 'test', '0', 'test', null, null, null, null, null, '0.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('6', '5', 'test', '0', 'test', '123', null, null, null, null, '0.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('7', '6', 'test2', '0', 'test', '123', null, null, null, null, '0.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('8', '7', 'test3', '0', 'test', '123', null, null, null, null, '0.0002', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('9', '8', 'test4', '0', 'test', '123', null, null, null, null, '0.0020', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('10', '9', 'test', '0', 'test', null, null, null, null, null, '0.0200', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('11', '10', 'test', '0', 'test', null, null, null, null, null, '0.2000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('12', '11', 'test', '0', 'test', null, null, null, null, null, '2.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('13', '12', 'test', '0', 'test', null, null, null, null, null, '20.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('14', '13', 'test', '0', 'test', null, null, null, null, null, '200.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('15', '14', 'test', '0', 'test', null, null, null, null, null, '1000.0000', null, null, null, null, null, null);
INSERT INTO `tblmember` VALUES ('16', '0', 'frankonlyfine', '1', '向华胜', '111111', '4300989899121098', '0000', '[email protected]', '13482821098', '0.0000', '0', '2010-10-25 14:55:26', '11', '', '', '');
INSERT INTO `tblmember` VALUES ('17', '0', 'frankonlyfine', '1', '向华胜', '111111', '4300989899121098', '0000', '[email protected]', '13482821098', '0.0000', '0', '2010-10-25 14:58:35', '11', '', '', '');

解决方案 »

  1.   

    DELIMITER $$USE `keyanguanli`$$DROP PROCEDURE IF EXISTS `test`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(
    aUserName VARCHAR(40),
    OUT ErrInfo    VARCHAR(40),
    OUT retCode    INT
    )
    BEGIN
        SET retCode=1;
        IF EXISTS(SELECT MemberID FROM tblmember WHERE `username`=aUserName) THEN
            SET ErrInfo='该用户名已经被注册过了!!';
            SET retCode=-1;
        END IF;
        SELECT retCode,ErrInfo,`aUserName`;
    END$$DELIMITER ;CALL test('frank00',@a, @b);变量名与字段名重复,优先字段名