B中是否有返回值的变量(OUT),A中怎么调用B的 mysql help: CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END; -> // Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;mysql> CALL simpleproc(@a); Query OK, 0 rows affected (0.00 sec)mysql> SELECT @a; +------+ | @a | +------+ | 3 | +------+ 1 row in set (0.00 sec)
if @a=0 then .... end if
THEN 后面的“退出”呢?我要退出啊!!
CREATE PROCEDURE `proname`(uid int,rid int,out errorno int,...) top:BEGIN .... if @a=0 then leave top; end if END;
仔细看看代码 top:BEGINmysql help: ITERATE labelITERATE can appear only within LOOP, REPEAT, and WHILE statements. ITERATE means “do the loop again.” Example: CREATE PROCEDURE doiterate(p1 INT) BEGIN label1: LOOP SET p1 = p1 + 1; IF p1 < 10 THEN ITERATE label1; END IF; LEAVE label1; END LOOP label1; SET @x = p1; END
{
.....
return xx;
}void A()
{
if( B() == 0 )
return;
}
mysql help:
CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)mysql> SELECT @a;
+------+
| @a |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
....
end if
top:BEGIN
....
if @a=0 then
leave top;
end if
END;
top:BEGINmysql help:
ITERATE labelITERATE can appear only within LOOP, REPEAT, and WHILE statements. ITERATE means “do the loop again.” Example: CREATE PROCEDURE doiterate(p1 INT)
BEGIN
label1: LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN ITERATE label1; END IF;
LEAVE label1;
END LOOP label1;
SET @x = p1;
END