⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tscli.c

📁 Mysql for Windows最新源码
💻 C
📖 第 1 页 / 共 4 页
字号:
"		ol_i_id := TO_BINARY(RND(1, n_items), 3);""""		ol_supply_w_id := c_w_id;""""		ol_quantity := RND(1, 10);""""		SELECT I_PRICE, I_NAME, I_DATA INTO i_price, i_name, i_data""		FROM ITEM""			WHERE I_ID = ol_i_id;""""		IF (SQL % NOTFOUND) THEN""			PRINTF('Rolling back');""			ROLLBACK WORK;""""			RETURN;""		END IF;""""		OPEN stock_cursor;""""		FETCH stock_cursor INTO s_quantity, s_data,""					s_dist_01, s_dist_02, s_dist_03,""					s_dist_04, s_dist_05, s_dist_06,""					s_dist_07, s_dist_08, s_dist_09,""					s_dist_10;""""		IF (s_quantity >= ol_quantity + 10) THEN""			s_quantity := s_quantity - ol_quantity;""		ELSE""			s_quantity := (s_quantity + 91) - ol_quantity;""		END IF;""""		UPDATE STOCK SET S_QUANTITY = s_quantity,""				S_YTD = S_YTD + ol_quantity,""				S_ORDER_CNT = S_ORDER_CNT + 1""			WHERE CURRENT OF stock_cursor;""""		IF (ol_supply_w_id <> c_w_id) THEN""""			o_all_local := '0';""			PRINTF('Remote order ',""				BINARY_TO_NUMBER(ol_supply_w_id), ' ',""				BINARY_TO_NUMBER(c_w_id));""""			UPDATE STOCK SET S_REMOTE_CNT = S_REMOTE_CNT + 1""				WHERE CURRENT OF stock_cursor;""		END IF;""""		CLOSE stock_cursor;""""		IF ((INSTR(i_data, 'ORIGINAL') > 0)""				OR (INSTR(s_data, 'ORIGINAL') > 0)) THEN""			REPLSTR(bg, 'B', i - 1, 1);""		END IF;""""		ol_amount := ol_quantity * i_price;""""		total := total + ol_amount;"	;	str4 ="		IF (c_d_id = '0') THEN""			ol_dist_info := s_dist_01;""		ELSIF (c_d_id = '1') THEN""			ol_dist_info := s_dist_02;""		ELSIF (c_d_id = '2') THEN""			ol_dist_info := s_dist_03;""		ELSIF (c_d_id = '3') THEN""			ol_dist_info := s_dist_04;""		ELSIF (c_d_id = '4') THEN""			ol_dist_info := s_dist_05;""		ELSIF (c_d_id = '5') THEN""			ol_dist_info := s_dist_06;""		ELSIF (c_d_id = '6') THEN""			ol_dist_info := s_dist_07;""		ELSIF (c_d_id = '7') THEN""			ol_dist_info := s_dist_08;""		ELSIF (c_d_id = '8') THEN""			ol_dist_info := s_dist_09;""		ELSIF (c_d_id = '9') THEN""			ol_dist_info := s_dist_10;""		END IF;""""		INSERT INTO ORDER_LINE VALUES (o_id, c_d_id, c_w_id,""					TO_BINARY(i, 1), ol_i_id,""					ol_supply_w_id, NULL, ol_quantity,""					ol_amount, ol_dist_info); ""	END LOOP;""""	total := (((total * (10000 + w_tax + d_tax)) / 10000)""			  * (10000 - c_discount)) / 10000;""""	o_entry_d := SYSDATE();""""	INSERT INTO ORDERS VALUES (o_id, c_d_id, c_w_id, c_id, o_entry_d,""					NULL, o_ol_cnt, o_all_local);""	INSERT INTO NEW_ORDER VALUES (o_id, c_d_id, c_w_id);""""	/* PRINTF('Inserted order lines:');""	ROW_PRINTF""		SELECT * FROM ORDER_LINE WHERE OL_O_ID = o_id AND""						OL_D_ID = c_d_id""						AND OL_W_ID = c_w_id; */"" 	/* COMMIT WORK; */"" 	END;"	;	str5 = ut_str_catenate(str1, str2);	str6 = ut_str_catenate(str3, str4);	str = ut_str_catenate(str5, str6);		new_order_query = pars_sql(str);	mem_free(str);	mem_free(str5);	mem_free(str6);	/*-----------------------------------------------------------*/	str1 =	"	PROCEDURE PAYMENT () IS"""" 	i INT;"" 	n_items INT;"" 	n_warehouses INT;"" 	n_districts INT;""	n_customers INT;""	w_id CHAR;""	w_street_1 CHAR;""	w_street_2 CHAR;""	w_city CHAR;""	w_state CHAR;""	w_zip CHAR;""	w_name CHAR;""	d_id CHAR;""	d_street_1 CHAR;""	d_street_2 CHAR;""	d_city CHAR;""	d_state CHAR;""	d_zip CHAR;""	d_name CHAR;""	c_w_id CHAR;""	c_d_id CHAR;""	c_street_1 CHAR;""	c_street_2 CHAR;""	c_city CHAR;""	c_state CHAR;""	c_zip CHAR;""	c_id CHAR;""	c_last CHAR;""	c_first CHAR;""	c_middle CHAR;""	c_phone CHAR;""	c_credit CHAR;""	c_credit_lim INT;""	c_discount INT;""	c_balance INT;""	c_since INT;""	c_data CHAR;""	byname INT;""	namecnt INT;""	amount INT;""	h_data CHAR;""	h_date INT;""	c_more_data CHAR;""	more_len INT;""	data_len INT;""""	DECLARE CURSOR warehouse_cursor IS""		SELECT W_STREET_1, W_STREET_2, W_CITY, W_STATE, W_ZIP, W_NAME""		FROM WAREHOUSE""			WHERE W_ID = w_id""			FOR UPDATE;""""	DECLARE CURSOR district_cursor IS""		SELECT D_STREET_1, D_STREET_2, D_CITY, D_STATE, D_ZIP, D_NAME""		FROM DISTRICT""			WHERE D_W_ID = w_id AND D_ID = d_id""			FOR UPDATE;""""	DECLARE CURSOR customer_by_name_cursor IS""		SELECT C_ID""		FROM CUSTOMER""			WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id""				AND C_LAST = c_last""			ORDER BY C_FIRST ASC;""""	DECLARE CURSOR customer_cursor IS""		SELECT C_FIRST, C_MIDDLE, C_LAST, C_STREET_1, C_STREET_2,""				C_CITY, C_STATE, C_ZIP, C_PHONE, C_CREDIT,""				C_CREDIT_LIM, C_DISCOUNT, C_BALANCE,""				C_SINCE""		FROM CUSTOMER""			WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id""							AND C_ID = c_id""			FOR UPDATE;"	;	str2 =	"	BEGIN"""" 	n_items := 200;"" 	n_warehouses := 1;"" 	n_districts := 10;"" 	n_customers := 200;""""	byname := RND(1, 100);""	amount := RND(1, 1000);""	h_date := SYSDATE();""	w_id := TO_BINARY(RND(1, n_warehouses), 2);""	d_id := TO_BINARY(47 + RND(1, n_districts), 1);""	c_w_id := TO_BINARY(RND(1, n_warehouses), 2);""	c_d_id := TO_BINARY(47 + RND(1, n_districts), 1);""""	OPEN warehouse_cursor;""""	FETCH warehouse_cursor INTO w_street_1, w_street_2, w_city, w_state,""							w_zip, w_name;""	UPDATE WAREHOUSE SET W_YTD = W_YTD + amount""		WHERE CURRENT OF warehouse_cursor;""""	CLOSE warehouse_cursor;""""	OPEN district_cursor;""""	FETCH district_cursor INTO d_street_1, d_street_2, d_city, d_state,""							d_zip, d_name;""	UPDATE DISTRICT SET D_YTD = D_YTD + amount""		WHERE CURRENT OF district_cursor;""""	CLOSE district_cursor;""""	IF (byname <= 60) THEN""		c_last := CONCAT('NAME', TO_CHAR(RND(1, n_customers) / 3));""""		SELECT COUNT(*) INTO namecnt""		FROM CUSTOMER""			WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id""							AND C_LAST = c_last;""		/* PRINTF('Payment trx: Customer name ', c_last,""						' namecount ', namecnt); */""		OPEN customer_by_name_cursor;""""		FOR i IN 1 .. (namecnt + 1) / 2 LOOP""			FETCH customer_by_name_cursor INTO c_id;""		END LOOP;""		/* ASSERT(NOT (customer_by_name_cursor % NOTFOUND)); */""		""		CLOSE customer_by_name_cursor;""	ELSE""		c_id := TO_BINARY(RND(1, n_customers), 3);""	END IF;"	;	str3 ="""	/* PRINTF('Payment for customer ', BINARY_TO_NUMBER(c_w_id), ' ',""				c_d_id, ' ', BINARY_TO_NUMBER(c_id)); */""	OPEN customer_cursor;""""	FETCH customer_cursor INTO c_first, c_middle, c_last, c_street_1,""					c_street_2, c_city, c_state, c_zip,""					c_phone, c_credit, c_credit_lim,""					c_discount, c_balance, c_since;""	c_balance := c_balance - amount;""""	h_data := CONCAT(w_name, '    ', d_name);""	""	IF (c_credit = 'BC') THEN""		/* PRINTF('Bad customer pays'); */""""		SELECT C_DATA INTO c_data""		FROM CUSTOMER""			WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id""							AND C_ID = c_id;""		c_more_data := CONCAT(""				' ', TO_CHAR(BINARY_TO_NUMBER(c_id)),""				' ', c_d_id,""				' ', TO_CHAR(BINARY_TO_NUMBER(c_w_id)),""				' ', d_id,""				' ', TO_CHAR(BINARY_TO_NUMBER(w_id)),""				TO_CHAR(amount),""				TO_CHAR(h_date),""				' ', h_data);""""		more_len := LENGTH(c_more_data);""		data_len := LENGTH(c_data);""		""		IF (more_len + data_len > 500) THEN""			data_len := 500 - more_len;""		END IF;""		""		c_data := CONCAT(c_more_data, SUBSTR(c_data, 0, data_len));""						""		UPDATE CUSTOMER SET C_BALANCE = c_balance,""				C_PAYMENT_CNT = C_PAYMENT_CNT + 1,""				C_YTD_PAYMENT = C_YTD_PAYMENT + amount,""				C_DATA = c_data""			WHERE CURRENT OF customer_cursor;""	ELSE""		UPDATE CUSTOMER SET C_BALANCE = c_balance,""				C_PAYMENT_CNT = C_PAYMENT_CNT + 1,""				C_YTD_PAYMENT = C_YTD_PAYMENT + amount""			WHERE CURRENT OF customer_cursor;""	END IF;""""	CLOSE customer_cursor;""	""	INSERT INTO HISTORY VALUES (c_d_id, c_w_id, c_id, d_id, w_id,""						h_date, amount, h_data);""	/* COMMIT WORK; */""""	END;"	;	str4 = ut_str_catenate(str1, str2);	str = ut_str_catenate(str4, str3);		payment_query = pars_sql(str);	mem_free(str);	mem_free(str4);	/*-----------------------------------------------------------*/	str1 =	"	PROCEDURE ORDER_STATUS () IS"""" 	i INT;"" 	n_items INT;"" 	n_warehouses INT;"" 	n_districts INT;""	n_customers INT;""	d_id CHAR;""	namecnt INT;""	c_w_id CHAR;""	c_d_id CHAR;""	c_id CHAR;""	c_last CHAR;""	c_first CHAR;""	c_middle CHAR;""	c_balance INT;""	byname INT;""	o_id INT;""	o_carrier_id CHAR;""	o_entry_d INT;""	ol_i_id CHAR;""	ol_supply_w_id CHAR;""	ol_quantity INT;""	ol_amount INT;""	ol_delivery_d INT;""""	DECLARE CURSOR orders_cursor IS""		SELECT O_ID, O_CARRIER_ID, O_ENTRY_D""		FROM ORDERS""			WHERE O_W_ID = c_w_id AND O_D_ID = c_d_id""							AND O_C_ID = c_id""			ORDER BY O_ID DESC;""""	DECLARE CURSOR order_line_cursor IS""		SELECT OL_I_ID, OL_SUPPLY_W_ID, OL_QUANTITY, OL_AMOUNT,""							OL_DELIVERY_D""		FROM ORDER_LINE""			WHERE OL_W_ID = c_w_id AND OL_D_ID = c_d_id""							AND OL_O_ID = o_id;""	DECLARE CURSOR customer_by_name_cursor IS""		SELECT C_ID""		FROM CUSTOMER""			WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id""				AND C_LAST = c_last""			ORDER BY C_FIRST ASC;""	BEGIN"""" 	n_items := 200;"" 	n_warehouses := 1;"" 	n_districts := 10;"" 	n_customers := 200;""""	c_w_id := TO_BINARY(RND(1, n_warehouses), 2);""	byname := RND(1, 100);"""	;	str2 ="	IF (byname <= 60) THEN""		d_id := TO_BINARY(47 + RND(1, n_districts), 1);	""""		c_d_id := d_id;""""		c_last := CONCAT('NAME', TO_CHAR(RND(1, n_customers) / 3));""""		SELECT COUNT(*) INTO namecnt""		FROM CUSTOMER""			WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id""							AND C_LAST = c_last;""		OPEN customer_by_name_cursor;""""		/* PRINTF('Order status trx: Customer name ', c_last,""						' namecount ', namecnt); */""		FOR i IN 1 .. (namecnt + 1) / 2 LOOP""			FETCH customer_by_name_cursor INTO c_id;""		END LOOP;""		/* ASSERT(NOT (customer_by_name_cursor % NOTFOUND)); */""""		CLOSE customer_by_name_cursor;""	ELSE""		c_d_id := TO_BINARY(47 + RND(1, n_districts), 1);""		c_id := TO_BINARY(RND(1, n_customers), 3);""	END IF;""""	SELECT C_BALANCE, C_FIRST, C_MIDDLE, C_LAST INTO c_balance, c_first,""							c_middle, c_last""	FROM CUSTOMER""		WHERE C_W_ID = c_w_id AND C_D_ID = c_d_id AND C_ID = c_id;""""	OPEN orders_cursor;""""	FETCH orders_cursor INTO o_id, o_carrier_id, o_entry_d;""""	IF (orders_cursor % NOTFOUND) THEN""		PRINTF('Order status trx: customer has no order');""		CLOSE orders_cursor;""""		/* COMMIT WORK; */""""		RETURN;""	END IF;""""	CLOSE orders_cursor;""""	OPEN order_line_cursor;""""	FOR i IN 0 .. 15 LOOP""		FETCH order_line_cursor INTO ol_i_id, ol_supply_w_id,""						ol_quantity, ol_amount,""						ol_delivery_d;""""		IF (order_line_cursor % NOTFOUND) THEN""			CLOSE order_line_cursor;""""			/* COMMIT WORK; */""""			RETURN;""		END IF;""	END LOOP;""	ASSERT(0 = 1);""	""	END;"	;	str = ut_str_catenate(str1, str2);		order_status_query = pars_sql(str);	mem_free(str);	/*-----------------------------------------------------------*/	str1 =	"	PROCEDURE DELIVERY () IS"""" 	i INT;"" 	n_items INT;"" 	n_warehouses INT;"" 	n_districts INT;""	n_customers INT;""	d_id CHAR;""	w_id CHAR;""	c_id CHAR;""	o_id INT;""	o_carrier_id INT;""	ol_delivery_d INT;""	ol_total INT;""""	DECLARE CURSOR new_order_cursor IS""		SELECT NO_O_ID""		FROM NEW_ORDER""			WHERE NO_W_ID = w_id AND NO_D_ID = d_id""			ORDER BY NO_O_ID ASC;""""	DECLARE CURSOR orders_cursor IS""		SELECT O_C_ID""		FROM ORDERS""			WHERE O_W_ID = w_id AND O_D_ID = d_id""							AND O_ID = o_id""			FOR UPDATE;""	BEGIN"""" 	n_items := 200;"" 	n_warehouses := 1;"" 	n_districts := 10;"" 	n_customers := 200;""""	w_id := TO_BINARY(RND(1, n_warehouses), 2);""	o_carrier_id := RND(1, 10);""	ol_delivery_d := SYSDATE();"	;	str2 ="	FOR i IN 1 .. n_districts LOOP""""		d_id := TO_BINARY(47 + i, 1);""""		OPEN new_order_cursor;""""		FETCH new_order_cursor INTO o_id;""""		IF (new_order_cursor % NOTFOUND) THEN""			/* PRINTF('No order to deliver'); */""""			CLOSE new_order_cursor;""		ELSE""			CLOSE new_order_cursor;""			/* PRINTF('Order to deliver'); */""""			DELETE FROM NEW_ORDER""				WHERE NO_W_ID = w_id AND NO_D_ID = d_id""						AND NO_O_ID = o_id;""			OPEN orders_cursor;""""			FETCH orders_cursor INTO c_id;""""			UPDATE ORDERS SET O_CARRIER_ID = o_carrier_id""				WHERE CURRENT OF orders_cursor;""""			CLOSE orders_cursor;""""			UPDATE ORDER_LINE SET OL_DELIVERY_D = ol_delivery_d""				WHERE OL_W_ID = w_id AND OL_D_ID = d_id""						AND OL_O_ID = o_id;""""			SELECT SUM(OL_AMOUNT) INTO ol_total""			FROM ORDER_LINE""				WHERE OL_W_ID = w_id AND OL_D_ID = d_id""						AND OL_O_ID = o_id;""""			UPDATE CUSTOMER SET C_BALANCE = C_BALANCE - ol_total""				WHERE C_W_ID = w_id AND C_D_ID = d_id""						AND C_ID = c_id;""		END IF;""	END LOOP;""""	/* COMMIT WORK; */""	""	END;"	;	str = ut_str_catenate(str1, str2);		delivery_query = pars_sql(str);	mem_free(str);	/*-----------------------------------------------------------*/	/* NOTE: COUNT(DISTINCT ...) not implemented yet */	str =	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -