MySQL程序显示"选择"声明两次

时间:2015-08-14 15:58:21

标签: mysql stored-procedures

我有很多存储过程在做一堆alter,create等......我希望在每个过程中看到哪一个正在执行。

DELIMITER |

DROP PROCEDURE IF EXISTS test1|

CREATE PROCEDURE test1()
    BEGIN
        IF /*select ...  */ THEN
            BEGIN
                SELECT "hello world";
            END;
        END IF;
END|

DROP PROCEDURE IF EXISTS test2|

CREATE PROCEDURE test2()
    BEGIN
        IF /*select ...  */ THEN
            BEGIN
                SELECT "hello world 2";
            END;
        END IF;
END|

DELIMITER ;
CALL test1();
CALL test2();

然后我称之为:

cat proc.sql | mysql -uroot -p mydb

输出:

hello world
hello world
hello world 2
hello world 2

root@localhost:test> select version();
+-------------------------+
| version()               |
+-------------------------+
| 5.5.44-0ubuntu0.14.04.1 |
+-------------------------+

为什么它会显示两次?

1 个答案:

答案 0 :(得分:2)

显示列名称和值。

mysql> CALL test1();
+-------------+
| hello world | <- Column name
+-------------+
| hello world | <- Value
+-------------+
1 row in set (0,00 sec)

如果为列指定了别名:

...
SELECT "hello world" `column_name`;
...

输出:

column_name
hello world

<强>更新

使用:

$ cat proc.sql | mysql -uroot -p -N mydb

输出:

hello world
hello world 2

请参阅:--skip-column-names, -N