Mysql 預存程序樣本,mysql預存程序樣本

來源:互聯網
上載者:User

Mysql 預存程序樣本,mysql預存程序樣本

DELIMITER $
CREATE PROCEDURE generate_Equipment(district INT,warehouseNO VARCHAR(10) )
BEGIN
 DECLARE l_no VARCHAR(50);
 DECLARE l_address VARCHAR(20) ;
 DECLARE l_name VARCHAR(20) ;
 DECLARE l_city VARCHAR(20) DEFAULT "天津";
 DECLARE l_longitude DOUBLE;
 DECLARE l_latitude DOUBLE;
 DECLARE l_money BIGINT;
 DECLARE l_type TINYINT DEFAULT 2;
 DECLARE l_rand DOUBLE;
 DECLARE l_init LONG;
 DECLARE l_actual LONG;
 DECLARE i INT DEFAULT 0;

 WHILE i<100 DO
  SELECT longitude INTO l_longitude FROM warehouse WHERE NO=warehouseNO AND district=district;
  SELECT latitude INTO l_latitude FROM warehouse WHERE NO=warehouseNO AND district=district;
  SET l_address="address";
  SET l_name="equipment";
  SET l_rand=RAND();
  SET l_no=CONCAT('03Q',ROUND(l_rand*1000000000000));
  SET l_address=CONCAT(l_address,ROUND(l_rand*i));
  SET l_name=CONCAT(l_name,ROUND(l_rand*i));
  SET l_longitude=l_longitude+l_rand;
  SET l_latitude=l_latitude+l_rand;
  SET l_init=ROUND(l_rand*30000);
  SET l_actual=ROUND(l_rand*13000);
  INSERT INTO equipment (NO,NAME,city,district,address,longitude,latitude,init,actual,TYPE) VALUES(l_no,l_name,l_city,district,l_address,l_longitude,l_latitude,l_init,l_actual,l_type);
  SET i=i+1;
 END WHILE;
END;
$
DELIMITER ;


一個MYSQL預存程序的例子

DELIMITER $$

DROP PROCEDURE IF EXISTS `proc_test`$$

CREATE
PROCEDURE `carpo_xianjin`.`proc_test`(IN user_name VARCHAR(50), IN amount VARCHAR(20))
BEGIN
DECLARE v_balance VARCHAR(20);

SELECT balance INTO v_balance FROM userbalance WHERE USER = user_name;

IF v_balance > amount THEN
UPDATE userbalance SET balance = balance - amount WHERE USER = user_name;

INSERT INTO LOG(TYPE) VALUES('修改餘額');
END IF;

END$$

DELIMITER ;
看下吧,你沒給指令碼,我也沒辦法測試。
 
mysql預存程序可以不可以輸入多個參數的? 如果可以給一個例子

mysql> DELIMITER //
mysql> CREATE PROCEDURE HelloWorld2(
-> IN vUserName VARCHAR(10),
-> OUT vOutValue VARCHAR(10),
-> INOUT vInOutValue VARCHAR(10))
-> BEGIN
-> SELECT CONCAT('Hello ', vUserName);
-> SET vOutValue = 'A';
-> SET vInOutValue = 'B';
-> END//
Query OK, 0 rows affected (0.00 sec)

mysql> call HelloWorld2('Edward', @a, @b)//
+-----------------------------+
| CONCAT('Hello ', vUserName) |
+-----------------------------+
| Hello Edward |
+-----------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> select @a//
+------+
| @a |
+------+
| A |
+------+
1 row in set (0.00 sec)

mysql> select @b//
+------+
| @b |
+------+
| B |
+------+
1 row in set (0.00 sec)
參考資料:hi.baidu.com/...1.html
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.