變量必須先聲明,后使用,一個declare只能申明一個變量
變量賦值有兩種方式1.set 2.select into
delimiter $$
CREATE PROCEDURE procedureUseVariable ( )
BEGIN
DECLARE myname VARCHAR(20) DEFAULT '';
set myname='想查出的名字';
select pname into myname from person where pid=2;
select myname;
END;
$$
delimiter ;
call procedureUseVariable();
如果最后想輸出myname,只需要在代碼塊中select myname;即可
舉個栗子,想要把學生數和人數放在兩個變量中
delimiter $$
create procedure procedureCountGroup()
begin
declare scount int default 0;
declare pcount int default 0;
select count(*) into scount from student;
select count(*) into pcount from person;
select scount,pcount;
end;
$$
結果如下
begin end是可以嵌套的,舉個栗子:想查出兩個表的人數和當前時間
delimiter $$
CREATE PROCEDURE procedureCountGroup ( )
BEGIN
BEGIN
DECLARE time TIMESTAMP;
SELECT max(CURRENT_TIME) INTO time from person;
SELECT time;
END;
BEGIN
DECLARE scount INT DEFAULT 0;
DECLARE pcount INT DEFAULT 0;
SELECT count( * ) INTO scount FROM student;
SELECT count( * ) INTO pcount FROM person;
SELECT scount, pcount;
END;
END;
$$
delimiter ;
call procedureCountGroup();
這樣可以一次查出兩個結果集,想要將結果集合並,可以將某些參數設置為全局變量,只需要在外圍的begin end中定義變量即可。
也就是說變量的作用域就是定義變量所在的begin end之間,否則變量無效。