atx*_*dba 5 mysql stored-procedures
有没有办法在存储过程中确定您正在运行的服务器的主机名?
您可以从客户端运行系统主机名,但不能从 SP 进行系统调用。我没有看到任何全局变量或状态。
我可以在我的 PC 上看到我的主机名
mysql> show variables like 'hostname';
+---------------+--------------+
| Variable_name | Value |
+---------------+--------------+
| hostname | LW-REDWARDS2 |
+---------------+--------------+
1 row in set (0.00 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
这适用于 MySQL 5.x
SELECT variable_value INTO @local_hostname
FROM information_schema.global_variables
WHERE variable_name = 'hostname';
Run Code Online (Sandbox Code Playgroud)
该查询直接在 mysql 客户端中工作:
mysql> SELECT variable_value INTO @local_hostname
-> FROM information_schema.global_variables
-> WHERE variable_name = 'hostname';
Query OK, 1 row affected (0.00 sec)
mysql> select @local_hostname;
+-----------------+
| @local_hostname |
+-----------------+
| LW-REDWARDS2 |
+-----------------+
1 row in set (0.00 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
这是我在我的 PC 上用 MySQL 5.5.12 编写的快速 SP
DELIMITER $$
DROP PROCEDURE IF EXISTS `junk`.`ShowHostName` $$
CREATE PROCEDURE `junk`.`ShowHostName` ()
BEGIN
SELECT variable_value INTO @local_hostname
FROM information_schema.global_variables
WHERE variable_name = 'hostname';
SELECT @local_hostname;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
然后运行 CALL junk.ShowHostName();
mysql> CALL junk.ShowHostName();
+-----------------+
| @local_hostname |
+-----------------+
| LW-REDWARDS2 |
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
这是一个函数
DELIMITER $$
DROP FUNCTION IF EXISTS `junk`.`GetHostName` $$
CREATE FUNCTION `junk`.`GetHostName` () RETURNS VARCHAR(64)
DETERMINISTIC
BEGIN
DECLARE local_hostname VARCHAR(64);
SELECT variable_value INTO local_hostname
FROM information_schema.global_variables
WHERE variable_name = 'hostname';
RETURN local_hostname;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
现在,只需选择它:
mysql> SELECT junk.GetHostName();
+--------------------+
| junk.GetHostName() |
+--------------------+
| LW-REDWARDS2 |
+--------------------+
1 row in set (0.00 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
试一试 !!!
归档时间: |
|
查看次数: |
12876 次 |
最近记录: |