167 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			167 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | ##################################################
 | ||
|  | # Author: Jeb
 | ||
|  | # Date:   2007/05
 | ||
|  | # Purpose: To create a tpcb database using Disk Data, 
 | ||
|  | #          tables and stored procedures to load the database
 | ||
|  | #          and run transactions against the DB
 | ||
|  | ##################################################
 | ||
|  | --disable_warnings | ||
|  | DROP DATABASE IF EXISTS tpcb; | ||
|  | --enable_warnings | ||
|  | CREATE DATABASE tpcb; | ||
|  | 
 | ||
|  | --echo | ||
|  | eval CREATE TABLE tpcb.account | ||
|  |                   (id INT, bid INT, balance DECIMAL(10,2), | ||
|  |                    filler CHAR(255), PRIMARY KEY(id)) | ||
|  |                    TABLESPACE $table_space STORAGE DISK | ||
|  |                    ENGINE=$engine_type; | ||
|  | --echo | ||
|  | eval CREATE TABLE tpcb.branch | ||
|  |                   (bid INT, balance DECIMAL(10,2), filler VARCHAR(255), | ||
|  |                    PRIMARY KEY(bid))TABLESPACE $table_space STORAGE DISK | ||
|  |                    ENGINE=$engine_type; | ||
|  | --echo | ||
|  | eval CREATE TABLE tpcb.teller | ||
|  |                   (tid INT, balance DECIMAL(10,2), filler VARCHAR(255), | ||
|  |                    PRIMARY KEY(tid)) TABLESPACE $table_space STORAGE DISK | ||
|  |                    ENGINE=$engine_type; | ||
|  | 
 | ||
|  | --echo | ||
|  | eval CREATE TABLE tpcb.history | ||
|  |                   (id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT, | ||
|  |                    tid INT, bid INT,  amount DECIMAL(10,2), | ||
|  |                    tdate DATETIME, teller CHAR(20), uuidf LONGBLOB, | ||
|  |                    filler CHAR(80),PRIMARY KEY (id)) | ||
|  |                    TABLESPACE $table_space STORAGE DISK | ||
|  |                    ENGINE=$engine_type; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo --- Create stored procedures & functions --- | ||
|  | --echo | ||
|  | 
 | ||
|  | --disable_query_log | ||
|  | delimiter |; | ||
|  | CREATE PROCEDURE tpcb.load() | ||
|  | BEGIN | ||
|  |   DECLARE acct INT DEFAULT 100; | ||
|  |   DECLARE brch INT DEFAULT 10; | ||
|  |   DECLARE tell INT DEFAULT 100; | ||
|  |   DECLARE tmp INT DEFAULT 10; | ||
|  |   WHILE brch > 0 DO | ||
|  |     SET tmp = 100; | ||
|  |     WHILE tmp > 0 DO | ||
|  |      INSERT INTO tpcb.account VALUES (acct, brch, 0.0, "FRESH ACCOUNT"); | ||
|  |      SET acct = acct - 1; | ||
|  |      SET tmp = tmp -1; | ||
|  |     END WHILE; | ||
|  |     INSERT INTO tpcb.branch VALUES (brch, 0.0, "FRESH BRANCH"); | ||
|  |     SET brch = brch - 1; | ||
|  |   END WHILE; | ||
|  |   WHILE tell > 0 DO | ||
|  |    INSERT INTO tpcb.teller VALUES (tell, 0.0, "FRESH TELLER"); | ||
|  |    SET tell = tell - 1; | ||
|  |   END WHILE; | ||
|  | END| | ||
|  | 
 | ||
|  | CREATE FUNCTION tpcb.account_id () RETURNS INT | ||
|  | BEGIN | ||
|  |   DECLARE num INT; | ||
|  |   DECLARE ran INT; | ||
|  |   SELECT RAND() * 10 INTO ran; | ||
|  |   IF (ran < 5) | ||
|  |    THEN | ||
|  |      SELECT RAND() * 10 INTO num; | ||
|  |    ELSE | ||
|  |      SELECT RAND() * 100 INTO num; | ||
|  |    END IF; | ||
|  |    IF (num < 1) | ||
|  |     THEN | ||
|  |      RETURN 1; | ||
|  |    END IF; | ||
|  |   RETURN  num; | ||
|  | END| | ||
|  | 
 | ||
|  | CREATE FUNCTION tpcb.teller_id () RETURNS INT | ||
|  | BEGIN | ||
|  |   DECLARE num INT; | ||
|  |   DECLARE ran INT; | ||
|  |   SELECT RAND() * 10 INTO ran; | ||
|  |   IF (ran < 5) | ||
|  |    THEN | ||
|  |      SELECT RAND() * 10 INTO num; | ||
|  |    ELSE | ||
|  |      SELECT RAND() * 100 INTO num; | ||
|  |    END IF; | ||
|  |    IF (num < 1) | ||
|  |     THEN | ||
|  |       RETURN 1; | ||
|  |    END IF; | ||
|  |    RETURN  num; | ||
|  | END| | ||
|  | 
 | ||
|  | CREATE PROCEDURE tpcb.trans(in format varchar(3)) | ||
|  | BEGIN | ||
|  |   DECLARE acct INT DEFAULT 0; | ||
|  |   DECLARE brch INT DEFAULT 0; | ||
|  |   DECLARE tell INT DEFAULT 0; | ||
|  |   DECLARE bal  DECIMAL(10,2) DEFAULT 0.0; | ||
|  |   DECLARE amount DECIMAL(10,2) DEFAULT 1.00; | ||
|  |   DECLARE test INT DEFAULT 0; | ||
|  |   DECLARE bbal DECIMAL(10,2) DEFAULT 0.0; | ||
|  |   DECLARE tbal DECIMAL(10,2) DEFAULT 0.0; | ||
|  |   DECLARE local_uuid VARCHAR(255); | ||
|  |   DECLARE local_user VARCHAR(255); | ||
|  |   DECLARE local_time TIMESTAMP; | ||
|  | 
 | ||
|  |   SELECT RAND() * 10 INTO test; | ||
|  |   SELECT tpcb.account_id() INTO acct; | ||
|  |   SELECT tpcb.teller_id() INTO tell; | ||
|  | 
 | ||
|  |   SELECT account.balance INTO bal FROM tpcb.account WHERE id = acct; | ||
|  |   SELECT account.bid INTO brch FROM tpcb.account WHERE id = acct; | ||
|  |   SELECT teller.balance INTO tbal FROM tpcb.teller WHERE tid = tell; | ||
|  |   SELECT branch.balance INTO bbal FROM tpcb.branch WHERE bid = brch; | ||
|  | 
 | ||
|  |   IF (test < 5) | ||
|  |    THEN | ||
|  |      SET bal = bal + amount; | ||
|  |      SET bbal = bbal + amount; | ||
|  |      SET tbal = tbal + amount; | ||
|  |      UPDATE tpcb.account SET balance = bal, filler = 'account updated' | ||
|  |      WHERE id = acct; | ||
|  |      UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated' | ||
|  |      WHERE bid = brch; | ||
|  |      UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated' | ||
|  |      WHERE tid = tell; | ||
|  |    ELSE | ||
|  |      SET bal = bal - amount; | ||
|  |      SET bbal = bbal - amount; | ||
|  |      SET tbal = tbal - amount; | ||
|  |      UPDATE tpcb.account SET balance = bal, filler = 'account updated' | ||
|  |      WHERE id = acct; | ||
|  |      UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated' | ||
|  |      WHERE bid = brch; | ||
|  |      UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated' | ||
|  |      WHERE tid = tell; | ||
|  |   END IF; | ||
|  | 
 | ||
|  |   IF (format = 'SBR') | ||
|  |   THEN | ||
|  |     SET local_uuid=UUID(); | ||
|  |     SET local_user=USER(); | ||
|  |     SET local_time= NOW(); | ||
|  |     INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, local_time,local_user, | ||
|  |                              local_uuid,'completed trans'); | ||
|  |   ELSE | ||
|  |     INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, NOW(), USER(), | ||
|  |                              UUID(),'completed trans'); | ||
|  |   END IF; | ||
|  | END| | ||
|  | delimiter ;| | ||
|  | --enable_query_log | ||
|  | --echo | ||
|  | --echo *** Stored Procedures Created *** | ||
|  | --echo | ||
|  | 
 |