在MySQL存储过程中,可不可以同时有返回参数和返回结果集 我试了很多次用C++ 或 JAVA 获取 都是只能返回一种
比如存储过程:
DELIMITER $$
DROP PROCEDURE IF EXISTS SP_queryCount $$
CREATE SP_queryCount (IN iCounts INT,OUT iNum INT)
BEGIN
SET @tmpCounts = iCounts ;
SET @tmpNum = 0 ;
SET @tureccmd = CONCAT('SELECT p_actorid FROM actor_a LIMIT ? '); PREPARE stmt FROM @tureccmd ;
EXECUTE stmt USING @tmpCounts ; /*运行获得结果集*/
DEALLOCATE PREPARE stmt ;
SET @tureccmd = CONCAT('SELECT COUNT(p_actorid) INTO @tmpNum FROM actor_a WHERE p_actorid = ? '); PREPARE stmt FROM @tureccmd ;
EXECUTE stmt USING @tmpCounts ;
DEALLOCATE PREPARE stmt ; SET iNum = @tmpNum ; /*运行参数获得返回数据iNum值*/
END$$
DELIMITER ;如何 能获得iNum 的值 也可以 得结果集的值呢
比如存储过程:
DELIMITER $$
DROP PROCEDURE IF EXISTS SP_queryCount $$
CREATE SP_queryCount (IN iCounts INT,OUT iNum INT)
BEGIN
SET @tmpCounts = iCounts ;
SET @tmpNum = 0 ;
SET @tureccmd = CONCAT('SELECT p_actorid FROM actor_a LIMIT ? '); PREPARE stmt FROM @tureccmd ;
EXECUTE stmt USING @tmpCounts ; /*运行获得结果集*/
DEALLOCATE PREPARE stmt ;
SET @tureccmd = CONCAT('SELECT COUNT(p_actorid) INTO @tmpNum FROM actor_a WHERE p_actorid = ? '); PREPARE stmt FROM @tureccmd ;
EXECUTE stmt USING @tmpCounts ;
DEALLOCATE PREPARE stmt ; SET iNum = @tmpNum ; /*运行参数获得返回数据iNum值*/
END$$
DELIMITER ;如何 能获得iNum 的值 也可以 得结果集的值呢
也可以将值插入到临时表中保存,取值即可
但你可以在mysql_real_query() 的时候调这个存储过程,在你的这个SP_queryCount返回了多个结果集,你可以mysql_next_result()
依次读取。
也可以将值插入到临时表中保存,取值即可
对mysql而言的可以
C++不可以获取