mysql存储过程

自学了一下mysql存储过程,采用的mysql版本是5.1.51-community server。

建立一个表

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是接受输入的水果信息,将信息插入水果表。

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 ;;

 关键字说明:

 DELIMITER关键字,用于声明什么符号做为存储过程结束的分界符,与";"区分开。

 SET声明了参数,@后跟参数名称。

 IN表示输入参数,OUT 表示输出参数。

 CALL调用其他存错过程(函数)。

posted @ 2015-12-01 17:06  达摩克利斯之剑  阅读(151)  评论(0编辑  收藏  举报