📄 sp-vars.result
字号:
DROP PROCEDURE IF EXISTS sp_vars_check_dflt;DROP PROCEDURE IF EXISTS sp_vars_check_assignment;DROP FUNCTION IF EXISTS sp_vars_check_ret1;DROP FUNCTION IF EXISTS sp_vars_check_ret2;DROP FUNCTION IF EXISTS sp_vars_check_ret3;DROP FUNCTION IF EXISTS sp_vars_check_ret4;SET @@sql_mode = 'ansi';CREATE PROCEDURE sp_vars_check_dflt()BEGINDECLARE v1 TINYINT DEFAULT 1e200;DECLARE v1u TINYINT UNSIGNED DEFAULT 1e200;DECLARE v2 TINYINT DEFAULT -1e200;DECLARE v2u TINYINT UNSIGNED DEFAULT -1e200;DECLARE v3 TINYINT DEFAULT 300;DECLARE v3u TINYINT UNSIGNED DEFAULT 300;DECLARE v4 TINYINT DEFAULT -300;DECLARE v4u TINYINT UNSIGNED DEFAULT -300;DECLARE v5 TINYINT DEFAULT 10 * 10 * 10;DECLARE v5u TINYINT UNSIGNED DEFAULT 10 * 10 * 10;DECLARE v6 TINYINT DEFAULT -10 * 10 * 10;DECLARE v6u TINYINT UNSIGNED DEFAULT -10 * 10 * 10;DECLARE v7 TINYINT DEFAULT '10';DECLARE v8 TINYINT DEFAULT '10 ';DECLARE v9 TINYINT DEFAULT ' 10 ';DECLARE v10 TINYINT DEFAULT 'String 10 ';DECLARE v11 TINYINT DEFAULT 'String10';DECLARE v12 TINYINT DEFAULT '10 String';DECLARE v13 TINYINT DEFAULT '10String';DECLARE v14 TINYINT DEFAULT concat('10', ' ');DECLARE v15 TINYINT DEFAULT concat(' ', '10');DECLARE v16 TINYINT DEFAULT concat('Hello, ', 'world');DECLARE v17 DECIMAL(64, 2) DEFAULT 12;DECLARE v18 DECIMAL(64, 2) DEFAULT 12.123;DECLARE v19 DECIMAL(64, 2) DEFAULT 11 + 1;DECLARE v20 DECIMAL(64, 2) DEFAULT 12 + 0.123;SELECT v1, v1u, v2, v2u, v3, v3u, v4, v4u;SELECT v5, v5u, v6, v6u;SELECT v7, v8, v9, v10, v11, v12, v13, v14, v15, v16;SELECT v17, v18, v19, v20;END|CREATE PROCEDURE sp_vars_check_assignment()BEGINDECLARE i1, i2, i3, i4 TINYINT;DECLARE u1, u2, u3, u4 TINYINT UNSIGNED;DECLARE d1, d2, d3 DECIMAL(64, 2);SET i1 = 1e200;SET i2 = -1e200;SET i3 = 300;SET i4 = -300;SELECT i1, i2, i3, i4;SET i1 = 10 * 10 * 10;SET i2 = -10 * 10 * 10;SET i3 = sign(10 * 10) * 10 * 20;SET i4 = sign(-10 * 10) * -10 * 20;SELECT i1, i2, i3, i4;SET u1 = 1e200;SET u2 = -1e200;SET u3 = 300;SET u4 = -300;SELECT u1, u2, u3, u4;SET u1 = 10 * 10 * 10;SET u2 = -10 * 10 * 10;SET u3 = sign(10 * 10) * 10 * 20;SET u4 = sign(-10 * 10) * -10 * 20;SELECT u1, u2, u3, u4;SET d1 = 1234;SET d2 = 1234.12;SET d3 = 1234.1234;SELECT d1, d2, d3;SET d1 = 12 * 100 + 34;SET d2 = 12 * 100 + 34 + 0.12;SET d3 = 12 * 100 + 34 + 0.1234;SELECT d1, d2, d3;END|CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINTBEGINRETURN 1e200;END|CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINTBEGINRETURN 10 * 10 * 10;END|CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINTBEGINRETURN 'Hello, world';END|CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)BEGINRETURN 12 * 10 + 34 + 0.1234;END|---------------------------------------------------------------Calling the routines, created in ANSI mode.---------------------------------------------------------------CALL sp_vars_check_dflt();v1 v1u v2 v2u v3 v3u v4 v4u127 255 -128 0 127 255 -128 0v5 v5u v6 v6u127 255 -128 0v7 v8 v9 v10 v11 v12 v13 v14 v15 v1610 10 10 0 0 10 10 10 10 0v17 v18 v19 v2012.00 12.12 12.00 12.12Warnings:Warning 1264 Out of range value adjusted for column 'v1' at row 1Warning 1264 Out of range value adjusted for column 'v1u' at row 1Warning 1264 Out of range value adjusted for column 'v2' at row 1Warning 1264 Out of range value adjusted for column 'v2u' at row 1Warning 1264 Out of range value adjusted for column 'v3' at row 1Warning 1264 Out of range value adjusted for column 'v3u' at row 1Warning 1264 Out of range value adjusted for column 'v4' at row 1Warning 1264 Out of range value adjusted for column 'v4u' at row 1Warning 1264 Out of range value adjusted for column 'v5' at row 1Warning 1264 Out of range value adjusted for column 'v5u' at row 1Warning 1264 Out of range value adjusted for column 'v6' at row 1Warning 1264 Out of range value adjusted for column 'v6u' at row 1Warning 1366 Incorrect integer value: 'String 10 ' for column 'v10' at row 1Warning 1366 Incorrect integer value: 'String10' for column 'v11' at row 1Warning 1265 Data truncated for column 'v12' at row 1Warning 1265 Data truncated for column 'v13' at row 1Warning 1366 Incorrect integer value: 'Hello, world' for column 'v16' at row 1Note 1265 Data truncated for column 'v18' at row 1Note 1265 Data truncated for column 'v20' at row 1CALL sp_vars_check_assignment();i1 i2 i3 i4127 -128 127 -128i1 i2 i3 i4127 -128 127 127u1 u2 u3 u4255 0 255 0u1 u2 u3 u4255 0 200 200d1 d2 d31234.00 1234.12 1234.12d1 d2 d31234.00 1234.12 1234.12Warnings:Warning 1264 Out of range value adjusted for column 'i1' at row 1Warning 1264 Out of range value adjusted for column 'i2' at row 1Warning 1264 Out of range value adjusted for column 'i3' at row 1Warning 1264 Out of range value adjusted for column 'i4' at row 1Warning 1264 Out of range value adjusted for column 'i1' at row 1Warning 1264 Out of range value adjusted for column 'i2' at row 1Warning 1264 Out of range value adjusted for column 'i3' at row 1Warning 1264 Out of range value adjusted for column 'i4' at row 1Warning 1264 Out of range value adjusted for column 'u1' at row 1Warning 1264 Out of range value adjusted for column 'u2' at row 1Warning 1264 Out of range value adjusted for column 'u3' at row 1Warning 1264 Out of range value adjusted for column 'u4' at row 1Warning 1264 Out of range value adjusted for column 'u1' at row 1Warning 1264 Out of range value adjusted for column 'u2' at row 1Note 1265 Data truncated for column 'd3' at row 1Note 1265 Data truncated for column 'd3' at row 1SELECT sp_vars_check_ret1();sp_vars_check_ret1()127Warnings:Warning 1264 Out of range value adjusted for column 'sp_vars_check_ret1()' at row 1SELECT sp_vars_check_ret2();sp_vars_check_ret2()127Warnings:Warning 1264 Out of range value adjusted for column 'sp_vars_check_ret2()' at row 1SELECT sp_vars_check_ret3();sp_vars_check_ret3()0Warnings:Warning 1366 Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1SELECT sp_vars_check_ret4();sp_vars_check_ret4()154.12Warnings:Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1SET @@sql_mode = 'traditional';---------------------------------------------------------------Calling in TRADITIONAL mode the routines, created in ANSI mode.---------------------------------------------------------------CALL sp_vars_check_dflt();v1 v1u v2 v2u v3 v3u v4 v4u127 255 -128 0 127 255 -128 0v5 v5u v6 v6u127 255 -128 0v7 v8 v9 v10 v11 v12 v13 v14 v15 v1610 10 10 0 0 10 10 10 10 0v17 v18 v19 v2012.00 12.12 12.00 12.12Warnings:Warning 1264 Out of range value adjusted for column 'v1' at row 1Warning 1264 Out of range value adjusted for column 'v1u' at row 1Warning 1264 Out of range value adjusted for column 'v2' at row 1Warning 1264 Out of range value adjusted for column 'v2u' at row 1Warning 1264 Out of range value adjusted for column 'v3' at row 1Warning 1264 Out of range value adjusted for column 'v3u' at row 1Warning 1264 Out of range value adjusted for column 'v4' at row 1Warning 1264 Out of range value adjusted for column 'v4u' at row 1Warning 1264 Out of range value adjusted for column 'v5' at row 1Warning 1264 Out of range value adjusted for column 'v5u' at row 1Warning 1264 Out of range value adjusted for column 'v6' at row 1Warning 1264 Out of range value adjusted for column 'v6u' at row 1Warning 1366 Incorrect integer value: 'String 10 ' for column 'v10' at row 1Warning 1366 Incorrect integer value: 'String10' for column 'v11' at row 1Warning 1265 Data truncated for column 'v12' at row 1Warning 1265 Data truncated for column 'v13' at row 1Warning 1366 Incorrect integer value: 'Hello, world' for column 'v16' at row 1Note 1265 Data truncated for column 'v18' at row 1Note 1265 Data truncated for column 'v20' at row 1CALL sp_vars_check_assignment();i1 i2 i3 i4127 -128 127 -128i1 i2 i3 i4127 -128 127 127u1 u2 u3 u4255 0 255 0u1 u2 u3 u4255 0 200 200d1 d2 d31234.00 1234.12 1234.12d1 d2 d31234.00 1234.12 1234.12Warnings:Warning 1264 Out of range value adjusted for column 'i1' at row 1Warning 1264 Out of range value adjusted for column 'i2' at row 1Warning 1264 Out of range value adjusted for column 'i3' at row 1Warning 1264 Out of range value adjusted for column 'i4' at row 1Warning 1264 Out of range value adjusted for column 'i1' at row 1Warning 1264 Out of range value adjusted for column 'i2' at row 1Warning 1264 Out of range value adjusted for column 'i3' at row 1Warning 1264 Out of range value adjusted for column 'i4' at row 1Warning 1264 Out of range value adjusted for column 'u1' at row 1Warning 1264 Out of range value adjusted for column 'u2' at row 1Warning 1264 Out of range value adjusted for column 'u3' at row 1Warning 1264 Out of range value adjusted for column 'u4' at row 1Warning 1264 Out of range value adjusted for column 'u1' at row 1Warning 1264 Out of range value adjusted for column 'u2' at row 1Note 1265 Data truncated for column 'd3' at row 1Note 1265 Data truncated for column 'd3' at row 1SELECT sp_vars_check_ret1();sp_vars_check_ret1()127Warnings:Warning 1264 Out of range value adjusted for column 'sp_vars_check_ret1()' at row 1SELECT sp_vars_check_ret2();sp_vars_check_ret2()127Warnings:Warning 1264 Out of range value adjusted for column 'sp_vars_check_ret2()' at row 1SELECT sp_vars_check_ret3();sp_vars_check_ret3()0Warnings:Warning 1366 Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1SELECT sp_vars_check_ret4();sp_vars_check_ret4()154.12Warnings:Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1DROP PROCEDURE sp_vars_check_dflt;DROP PROCEDURE sp_vars_check_assignment;DROP FUNCTION sp_vars_check_ret1;DROP FUNCTION sp_vars_check_ret2;DROP FUNCTION sp_vars_check_ret3;DROP FUNCTION sp_vars_check_ret4;CREATE PROCEDURE sp_vars_check_dflt()BEGINDECLARE v1 TINYINT DEFAULT 1e200;DECLARE v1u TINYINT UNSIGNED DEFAULT 1e200;DECLARE v2 TINYINT DEFAULT -1e200;DECLARE v2u TINYINT UNSIGNED DEFAULT -1e200;DECLARE v3 TINYINT DEFAULT 300;DECLARE v3u TINYINT UNSIGNED DEFAULT 300;DECLARE v4 TINYINT DEFAULT -300;DECLARE v4u TINYINT UNSIGNED DEFAULT -300;DECLARE v5 TINYINT DEFAULT 10 * 10 * 10;DECLARE v5u TINYINT UNSIGNED DEFAULT 10 * 10 * 10;DECLARE v6 TINYINT DEFAULT -10 * 10 * 10;DECLARE v6u TINYINT UNSIGNED DEFAULT -10 * 10 * 10;DECLARE v7 TINYINT DEFAULT '10';DECLARE v8 TINYINT DEFAULT '10 ';DECLARE v9 TINYINT DEFAULT ' 10 ';DECLARE v10 TINYINT DEFAULT 'String 10 ';DECLARE v11 TINYINT DEFAULT 'String10';DECLARE v12 TINYINT DEFAULT '10 String';DECLARE v13 TINYINT DEFAULT '10String';DECLARE v14 TINYINT DEFAULT concat('10', ' ');DECLARE v15 TINYINT DEFAULT concat(' ', '10');DECLARE v16 TINYINT DEFAULT concat('Hello, ', 'world');DECLARE v17 DECIMAL(64, 2) DEFAULT 12;DECLARE v18 DECIMAL(64, 2) DEFAULT 12.123;DECLARE v19 DECIMAL(64, 2) DEFAULT 11 + 1;DECLARE v20 DECIMAL(64, 2) DEFAULT 12 + 0.123;SELECT v1, v1u, v2, v2u, v3, v3u, v4, v4u;SELECT v5, v5u, v6, v6u;SELECT v7, v8, v9, v10, v11, v12, v13, v14, v15, v16;SELECT v17, v18, v19, v20;END|CREATE PROCEDURE sp_vars_check_assignment()BEGINDECLARE i1, i2, i3, i4 TINYINT;DECLARE u1, u2, u3, u4 TINYINT UNSIGNED;DECLARE d1, d2, d3 DECIMAL(64, 2);SET i1 = 1e200;SET i2 = -1e200;SET i3 = 300;SET i4 = -300;SELECT i1, i2, i3, i4;SET i1 = 10 * 10 * 10;SET i2 = -10 * 10 * 10;SET i3 = sign(10 * 10) * 10 * 20;SET i4 = sign(-10 * 10) * -10 * 20;SELECT i1, i2, i3, i4;SET u1 = 1e200;SET u2 = -1e200;SET u3 = 300;SET u4 = -300;SELECT u1, u2, u3, u4;SET u1 = 10 * 10 * 10;SET u2 = -10 * 10 * 10;SET u3 = sign(10 * 10) * 10 * 20;SET u4 = sign(-10 * 10) * -10 * 20;SELECT u1, u2, u3, u4;SET d1 = 1234;SET d2 = 1234.12;SET d3 = 1234.1234;SELECT d1, d2, d3;SET d1 = 12 * 100 + 34;SET d2 = 12 * 100 + 34 + 0.12;SET d3 = 12 * 100 + 34 + 0.1234;SELECT d1, d2, d3;END|CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINTBEGINRETURN 1e200;END|CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINTBEGINRETURN 10 * 10 * 10;END|CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINTBEGINRETURN 'Hello, world';END|CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)BEGINRETURN 12 * 10 + 34 + 0.1234;END|---------------------------------------------------------------Calling the routines, created in TRADITIONAL mode.---------------------------------------------------------------CALL sp_vars_check_dflt();ERROR 22003: Out of range value adjusted for column 'v1' at row 1CALL sp_vars_check_assignment();ERROR 22003: Out of range value adjusted for column 'i1' at row 1SELECT sp_vars_check_ret1();ERROR 22003: Out of range value adjusted for column 'sp_vars_check_ret1()' at row 1SELECT sp_vars_check_ret2();ERROR 22003: Out of range value adjusted for column 'sp_vars_check_ret2()' at row 1SELECT sp_vars_check_ret3();ERROR HY000: Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1SELECT sp_vars_check_ret4();sp_vars_check_ret4()154.12Warnings:Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1SET @@sql_mode = 'ansi';DROP PROCEDURE sp_vars_check_dflt;DROP PROCEDURE sp_vars_check_assignment;DROP FUNCTION sp_vars_check_ret1;DROP FUNCTION sp_vars_check_ret2;DROP FUNCTION sp_vars_check_ret3;DROP FUNCTION sp_vars_check_ret4;---------------------------------------------------------------BIT data type tests---------------------------------------------------------------DROP PROCEDURE IF EXISTS p1;CREATE PROCEDURE p1()BEGINDECLARE v1 BIT;DECLARE v2 BIT(1);DECLARE v3 BIT(3) DEFAULT b'101';DECLARE v4 BIT(64) DEFAULT 0x5555555555555555;DECLARE v5 BIT(3);DECLARE v6 BIT(64);DECLARE v7 BIT(8) DEFAULT 128;DECLARE v8 BIT(8) DEFAULT '128';DECLARE v9 BIT(8) DEFAULT ' 128';DECLARE v10 BIT(8) DEFAULT 'x 128';SET v1 = v4;SET v2 = 0;SET v5 = v4; # check overflowSET v6 = v3; # check paddingSELECT HEX(v1);SELECT HEX(v2);SELECT HEX(v3);SELECT HEX(v4);SELECT HEX(v5);SELECT HEX(v6);SELECT HEX(v7);SELECT HEX(v8);SELECT HEX(v9);SELECT HEX(v10);END|CALL p1();HEX(v1)01HEX(v2)00HEX(v3)05HEX(v4)5555555555555555HEX(v5)07HEX(v6)0000000000000005HEX(v7)80HEX(v8)FFHEX(v9)FFHEX(v10)FFWarnings:Warning 1264 Out of range value adjusted for column 'v8' at row 1Warning 1264 Out of range value adjusted for column 'v9' at row 1Warning 1264 Out of range value adjusted for column 'v10' at row 1Warning 1264 Out of range value adjusted for column 'v1' at row 1Warning 1264 Out of range value adjusted for column 'v5' at row 1DROP PROCEDURE p1;---------------------------------------------------------------CASE expression tests.---------------------------------------------------------------DROP PROCEDURE IF EXISTS p1;Warnings:Note 1305 PROCEDURE p1 does not existDROP PROCEDURE IF EXISTS p2;Warnings:Note 1305 PROCEDURE p2 does not existDROP TABLE IF EXISTS t1;Warnings:Note 1051 Unknown table 't1'CREATE TABLE t1(log_msg VARCHAR(1024));CREATE PROCEDURE p1(arg VARCHAR(255))BEGININSERT INTO t1 VALUES('p1: step1');CASE arg * 10WHEN 10 * 10 THENINSERT INTO t1 VALUES('p1: case1: on 10');WHEN 10 * 10 + 10 * 10 THENBEGINCASE arg / 10WHEN 1 THENINSERT INTO t1 VALUES('p1: case1: case2: on 1');WHEN 2 THENBEGINDECLARE i TINYINT DEFAULT 10;WHILE i > 0 DOINSERT INTO t1 VALUES(CONCAT('p1: case1: case2: loop: i: ', i));CASE MOD(i, 2)WHEN 0 THENINSERT INTO t1 VALUES('p1: case1: case2: loop: i is even');WHEN 1 THENINSERT INTO t1 VALUES('p1: case1: case2: loop: i is odd');ELSEINSERT INTO t1 VALUES('p1: case1: case2: loop: ERROR');END CASE;SET i = i - 1;END WHILE;END;ELSEINSERT INTO t1 VALUES('p1: case1: case2: ERROR');END CASE;CASE argWHEN 10 THENINSERT INTO t1 VALUES('p1: case1: case3: on 10');WHEN 20 THENINSERT INTO t1 VALUES('p1: case1: case3: on 20');ELSEINSERT INTO t1 VALUES('p1: case1: case3: ERROR');END CASE;END;ELSEINSERT INTO t1 VALUES('p1: case1: ERROR');END CASE;CASE arg * 10WHEN 10 * 10 THENINSERT INTO t1 VALUES('p1: case4: on 10');WHEN 10 * 10 + 10 * 10 THENBEGINCASE arg / 10WHEN 1 THENINSERT INTO t1 VALUES('p1: case4: case5: on 1');WHEN 2 THENBEGINDECLARE i TINYINT DEFAULT 10;WHILE i > 0 DOINSERT INTO t1 VALUES(CONCAT('p1: case4: case5: loop: i: ', i));CASE MOD(i, 2)WHEN 0 THENINSERT INTO t1 VALUES('p1: case4: case5: loop: i is even');WHEN 1 THENINSERT INTO t1 VALUES('p1: case4: case5: loop: i is odd');ELSEINSERT INTO t1 VALUES('p1: case4: case5: loop: ERROR');END CASE;SET i = i - 1;END WHILE;END;ELSEINSERT INTO t1 VALUES('p1: case4: case5: ERROR');END CASE;CASE argWHEN 10 THENINSERT INTO t1 VALUES('p1: case4: case6: on 10');WHEN 20 THENINSERT INTO t1 VALUES('p1: case4: case6: on 20');ELSEINSERT INTO t1 VALUES('p1: case4: case6: ERROR');END CASE;END;ELSEINSERT INTO t1 VALUES('p1: case4: ERROR');END CASE;END|CREATE PROCEDURE p2()BEGINDECLARE i TINYINT DEFAULT 3;WHILE i > 0 DOIF MOD(i, 2) = 0 THENSET @_test_session_var = 10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -