mysql存儲過程

自學了一下mysql存儲過程,採用的mysql版本是5.1.51-community server。mysql

創建一個表sql

CREATE TABLE `fruit` (
  `ID` int(10) NOT NULL,
  `NAME` varchar(10) DEFAULT NULL,
  `TYPENAME` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`ID`)
)

存儲過程P_GET_TYPE_NAME是根據輸入的類型號碼判斷水果類型。函數

DELIMITER $$

DROP PROCEDURE IF EXISTS 'P_GET_TYPE_NAME' $$

CREATE PROCEDURE P_GET_TYPE_NAME(IN ID int,OUT NAME VARCHAR(50) CHARACTER SET utf8)
BEGIN
	IF (ID = 1) THEN
		SET NAME = '水果';
	END IF;
	IF (ID = 2) THEN
		SET NAME = '蔬菜';
	END IF;
END $$
DELIMITER ;;

存儲過程P_INSERT_FRUIT是接受輸入的水果信息,將信息插入水果表。ui

DELIMITER $$

DROP PROCEDURE IF EXISTS 'P_INSERT_FRUIT' $$

CREATE PROCEDURE P_INSERT_FRUIT(IN ID INT,IN NAME VARCHAR(10),IN TYPENO INT)
BEGIN
	SET @ID = ID;
	SET @NAME = NAME;
	SET @TYPENO = TYPENO;
	SET @TYPENAME = NULL;
	CALL P_GET_TYPE_NAME(@TYPENO,@TYPENAME);

	SET @insertSql = CONCAT('INSERT INTO FRUIT VALUES(?,?,?)');
	PREPARE stmtinsert FROM @insertSql;
	EXECUTE stmtinsert USING @ID,@NAME,@TYPENAME;
        DEALLOCATE PREPARE stmtinsert;
END $$
DELIMITER ;;

 關鍵字說明:server

 DELIMITER關鍵字,用於聲明什麼符號作爲存儲過程結束的分界符,與";"區分開。blog

 SET聲明瞭參數,@後跟參數名稱。it

 IN表示輸入參數,OUT 表示輸出參數。class

 CALL調用其餘存錯過程(函數)。存儲過程

相關文章
相關標籤/搜索