问题是这样滴~以下是存储过程内容BEGIN
DECLARE userExist INT;
DECLARE nasCanAccess INT;
DECLARE nasID INT;
DECLARE UniName VARCHAR(32);
DECLARE groupName VARCHAR(32); SELECT COUNT(UniName) INTO userExist FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 1);
IF userExist>0 THEN
SELECT UniName INTO UniName FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 1);
ELSE
SELECT COUNT(UniName) INTO userExist FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 0);
IF userExist>0 THEN
SELECT COUNT(UniName) INTO nasCanAccess FROM ar_usernas WHERE (`UserName` = UserName AND `NASID` = 1);
IF nasCanAccess>0 THEN
SELECT UniName INTO UniName FROM ar_usernas WHERE (`UserName` = UserName AND `NASID` = 1);
END IF;
END IF;
END IF;
SELECT `id`, `username`, `attribute`, `value`, `op` FROM ar_checks WHERE (`UniName` = UniName);
END嗯,直接CALL 这个存储过程无法得到数据,
但是,CALL之后,再执行
SELECT `id`, `username`, `attribute`, `value`, `op` FROM ar_checks WHERE (`UniName` = UniName);
却可以获得数据这是神马问题?如何解决呢?
DECLARE userExist INT;
DECLARE nasCanAccess INT;
DECLARE nasID INT;
DECLARE UniName VARCHAR(32);
DECLARE groupName VARCHAR(32); SELECT COUNT(UniName) INTO userExist FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 1);
IF userExist>0 THEN
SELECT UniName INTO UniName FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 1);
ELSE
SELECT COUNT(UniName) INTO userExist FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 0);
IF userExist>0 THEN
SELECT COUNT(UniName) INTO nasCanAccess FROM ar_usernas WHERE (`UserName` = UserName AND `NASID` = 1);
IF nasCanAccess>0 THEN
SELECT UniName INTO UniName FROM ar_usernas WHERE (`UserName` = UserName AND `NASID` = 1);
END IF;
END IF;
END IF;
SELECT `id`, `username`, `attribute`, `value`, `op` FROM ar_checks WHERE (`UniName` = UniName);
END嗯,直接CALL 这个存储过程无法得到数据,
但是,CALL之后,再执行
SELECT `id`, `username`, `attribute`, `value`, `op` FROM ar_checks WHERE (`UniName` = UniName);
却可以获得数据这是神马问题?如何解决呢?
解决方案 »
- dbcc checkident(表名,reseed,新值),报错问题,急。。。
- 关于MYSQL全文检索
- 小白问题! 插入时 "\" 不能正常显示,怎么解决?
- mysql-4.0.15-win初始设置问题?救急!谢谢
- 怎样将一台计算机备份的数据库文件(SQL Server d:\)恢复到另一台计算机上(SQL Server c:\)
- 在windows下面怎样安装mysql?
- mysql数据筛选
- mysql 服务器无法启动
- 关于mysql一个存储过程耗时很长的问题,求优化思路
- MYSQL 递归查询问题 求大神帮忙 解决
- GUN Taso Debian Linux下安装MySql 5.0.67失败
- 求助"查询1个月未登录的用户人数"的语句该怎么写
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
'截至2010-09-11 18:34:08 用户结帖率0.00% 当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖
CREATE DEFINER = `root`@`localhost` PROCEDURE `NewProc`(IN UserName varchar(30),IN NasName varchar(30))
BEGIN
DECLARE userExist INT;
DECLARE nasCanAccess INT;
DECLARE nasID INT;
DECLARE UniName VARCHAR(32);
DECLARE groupName VARCHAR(32); SELECT COUNT(UniName) INTO userExist FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 1);
IF userExist>0 THEN
SELECT UniName INTO UniName FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 1);
ELSE
SELECT COUNT(UniName) INTO userExist FROM ar_users WHERE (`UserName` = UserName AND `IsGlobal` = 0);
IF userExist>0 THEN
SELECT COUNT(UniName) INTO nasCanAccess FROM ar_usernas WHERE (`UserName` = UserName AND `NASID` = 1);
IF nasCanAccess>0 THEN
SELECT UniName INTO UniName FROM ar_usernas WHERE (`UserName` = UserName AND `NASID` = 1);
END IF;
END IF;
END IF;
SELECT `id`, `username`, `attribute`, `value`, `op` FROM ar_checks WHERE (`UniName` = UniName);
END;DROP TABLE IF EXISTS `ar_checks`;
CREATE TABLE `ar_checks` (
`id` int(11) NOT NULL DEFAULT '0',
`uniname` varchar(64) DEFAULT NULL,
`username` varchar(64) DEFAULT NULL,
`attribute` varchar(64) DEFAULT NULL,
`op` char(2) DEFAULT NULL,
`value` varchar(254) DEFAULT NULL,
`enabled` int(1) DEFAULT '1',
PRIMARY KEY (`id`),
KEY `uniname` (`uniname`),
KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of ar_checks
-- ----------------------------
INSERT INTO `ar_checks` VALUES ('0', 'lonelyswan@nas1', 'lonelyswan', null, null, null, '1');-- ----------------------------
-- Table structure for `ar_usernas`
-- ----------------------------
DROP TABLE IF EXISTS `ar_usernas`;
CREATE TABLE `ar_usernas` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uniname` varchar(64) DEFAULT NULL,
`username` varchar(64) DEFAULT NULL,
`nasid` int(11) DEFAULT NULL,
`enabled` int(1) DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of ar_usernas
-- ----------------------------
INSERT INTO `ar_usernas` VALUES ('1', 'lonelyswan@nas1', 'lonelyswan', '1', '1');-- ----------------------------
-- Table structure for `ar_users`
-- ----------------------------
DROP TABLE IF EXISTS `ar_users`;
CREATE TABLE `ar_users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uniname` varchar(64) DEFAULT NULL,
`username` varchar(64) DEFAULT NULL,
`isglobal` int(1) DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of ar_users
-- ----------------------------
INSERT INTO `ar_users` VALUES ('1', 'lonelyswan@nas1', 'lonelyswan', '0');
+----+-----------------+------------+-----------+------+-------+---------+
| id | uniname | username | attribute | op | value | enabled |
+----+-----------------+------------+-----------+------+-------+---------+
| 0 | lonelyswan@nas1 | lonelyswan | NULL | NULL | NULL | 1 |
+----+-----------------+------------+-----------+------+-------+---------+
1 row in set (0.00 sec)