1. 程式人生 > >SQL儲存過程,函式

SQL儲存過程,函式

儲存過程和函式的區別: 儲存過程可以沒有返回值,函式必須有返回值;

// 語法
CREATE PROCEDURE 儲存過程名(引數列表)
BEGIN
	儲存過程體;
END

引數模式 IN , OUT , INOUT
舉例:IN name VARCHAR(20)

呼叫:CALL 儲存過程名
1、 IN 引數
DELIMITER $  // 定義結束符號
CREATE PROCEDURE 	test01(IN name VARCHAR(20))
BEGIN
	DECLARE result  INT DEFAULT 0; # 宣告並初始化
	select count(*) into  result  # 賦值
	from stu s where s.name = name ; 
	select result;
END $

呼叫:
CALL test01('小明') $ 


2、 OUT 引數

CREATE PROCEDURE 	test02(IN name VARCHAR(20), OUT  bname VARCHAR(20) )
BEGIN
	select s.bname into  bname 
	from stu s where s.name = name ; 
END $
呼叫:
CALL test02('小白',@bname)$
select @bame$

3、 INOUT 引數
CREATE PROCEDURE 	test03(INOUT a INT,INOUT b INT)
BEGIN
	SET a = a + 10 ;
	SET b = b + 10 ; 
END $

呼叫:
set @a=10$
set @b=20$
call test03(@a,@b)$
select @a,@b$


4、刪除儲存過程
DROP PROCEDURE 存錯過程名;

5、檢視儲存過程資訊
SHOW CREATE PROCEDURE  存錯過程名;
函式語法
CREATE FUNCTION 函式名(引數列表)RETURNS 返回型別
BEGIN
		函式體
END
呼叫 
select 函式名(引數列表)

1、有引數返回
CREATE FUNCTUIN test01 (name VARCHAR(20) ) RETURNS DOUBLE
BEGIN
		SET @sal = 0;
		SELECT id INTO @sal
		FROM stu
		WHERE last_name = name ;
		RETURN @sal; 
END

select test01('xiaoming') $

檢視函式
SHOW CREATE FUNCTION 函式名;

刪除函式
DROP FUNCTION  函式名;

迴圈語句

if 函式
1、語法:if(表示式1,表示式2,表示式3)
如果表示式1成立,則返回表示式2的值,否則返回表示式3的值;

2、語法:
IF 條件1 THEN 語句1或返回值;
ELSEIF 條件2 THEN 語句2;
......
END IF; 			

case 結構
1、等值判斷
CASE 變數|表示式|欄位
WHEN 要判斷的值 THEN 返回值1;
WHEN 要判斷的值 THEN 返回值2;
.......
ELSE 要返回的值;
END CASE;

2、 區間判斷

CASE 
WHEN 要判斷的條件1 THEN 返回值1;
WHEN 要判斷的條件2 THEN 返回值2;
.......
ELSE 要返回的值;
END CASE;

迴圈結構
1、while迴圈
WHILE 條件 DO 迴圈體
END WHILE;
舉例:
CREATE PROCEDURE test01 (IN count INT ) 
BEGIN
		DECLARE i INT DEFAULT 1;
		WHILE i<count DO
		INSERT INTO admin(name,pwd) VALUES ('ROSE'+i,'123456');
		SET i = i + 1;
		END WHILE;
END

PS:LEAVE 結束迴圈
	  ITERATE 結束本次迴圈