ホームページ > データベース > mysql チュートリアル > MySQL存储过程带in和out参数_MySQL

MySQL存储过程带in和out参数_MySQL

WBOY
リリース: 2016-06-01 13:31:05
オリジナル
1280 人が閲覧しました

bitsCN.com

MySQL存储过程带in和out参数

 

最简单的例子:

[html] mysql> DELIMITER $$  mysql> USE test $$  Database changed  mysql> DROP PROCEDURE IF EXISTS `sp_add`$$  Query OK, 0 rows affected (0.00 sec)    mysql> CREATE PROCEDURE sp_add(a INT, b INT,OUT c INT)      -> BEGIN       -> SET c=a+ b;      -> END$$  Query OK, 0 rows affected (0.00 sec)    mysql> DELIMITER ;  
ログイン後にコピー

[html] mysql> CALL sp_add (1,2,@c);  Query OK, 0 rows affected (0.00 sec)</p><p>mysql> SELECT @c;  +------+  | @c   |  +------+  |    3 |  +------+  1 row in set (0.00 sec)
ログイン後にコピー

一个稍微复杂的例子:

[html] mysql> show create table t_BillNo;  +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+  | Table    | Create Table                                                                                                                                                                        |  +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+  | t_BillNo | CREATE TABLE `t_billno` (    `SaleNo` bigint(20) DEFAULT NULL,    `bmh` varchar(20) DEFAULT NULL  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC |  +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+  1 row in set (0.00 sec)    mysql> select * from t_BillNo;  +--------+------+  | SaleNo | bmh  |  +--------+------+  |      1 | 2    |  |      4 | 3    |  |      4 | 5    |  |      7 | 7    |  |     12 | 8    |  +--------+------+  5 rows in set (0.00 sec)    mysql>   mysql> DELIMITER $$  mysql> USE test $$  Database changed  mysql> DROP PROCEDURE IF EXISTS `sp_GetMaxNumber`$$  Query OK, 0 rows affected (0.01 sec)    DELIMITER $$  USE test $$  DROP PROCEDURE IF EXISTS `sp_GetMaxNumber`$$  CREATE PROCEDURE sp_GetMaxNumber (IN v_bmh VARCHAR(6), OUT v_MaxNo INT)  BEGIN      START TRANSACTION;      UPDATE t_BillNo      SET SaleNo = IFNULL(SaleNo,0)+1       WHERE bmh = v_bmh;      IF @@error_count = 0 THEN          BEGIN            SELECT Saleno INTO v_MaxNo FROM t_BillNo WHERE bmh = v_bmh;          COMMIT;          END;      ELSE          BEGIN               ROLLBACK;               SET v_MaxNo = 0;          END;      END IF;  END$$  DELIMITER ;    mysql> CREATE PROCEDURE sp_GetMaxNumber (IN v_bmh VARCHAR(6), OUT v_MaxNo INT)      -> BEGIN      -> START TRANSACTION;      -> UPDATE t_BillNo      -> SET SaleNo = IFNULL(SaleNo,0)+1       -> WHERE bmh = v_bmh;      -> IF @@error_count = 0 THEN      -> BEGIN      ->   SELECT Saleno INTO v_MaxNo FROM t_BillNo WHERE bmh = v_bmh;      -> COMMIT;      -> END;      -> ELSE      -> BEGIN      ->      ROLLBACK;      ->      SET v_MaxNo = 0;      -> END;      -> END IF;      -> END$$  Query OK, 0 rows affected (0.00 sec)    mysql> DELIMITER ;  mysql>     mysql> call sp_GetMaxNumber(8,@v_MaxNo);  Query OK, 0 rows affected (0.00 sec)    mysql> select @v_MaxNo;  +----------+  | @v_MaxNo |  +----------+  |       12 |  +----------+  1 row in set (0.00 sec)  
ログイン後にコピー

 


bitsCN.com
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート