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调用其余存错过程(函数)。存储过程

相关文章
相关标签/搜索