CREATE PROCEDURE p_samp(
IN p_id INT,IN p_table_choice VARCHAR(10)
)
BEGIN
CASE p_table_choice
WHEN p_table_choice = 'A' THEN
USE database1;
update sample1
SET name = 'sam'
WHERE id = p_id;
WHEN p_table_choice = 'B' THEN
USE database2;
update sample2
SET name = 'sam'
WHERE id = p_id;
ELSE
BEGIN
END;
END CASE ;
END;
回答
你可以试试:
CREATE PROCEDURE p_samp(
IN p_id INT,IN p_table_choice VARCHAR(10)
)
BEGIN
CASE p_table_choice
WHEN p_table_choice = 'A' THEN
update database1.sample1
SET name = 'sam'
WHERE id = p_id;
WHEN p_table_choice = 'B' THEN
update database2.sample2
SET name = 'sam'
WHERE id = p_id;
ELSE
BEGIN
END;
END CASE ;
END;
我尝试了样品的过程和它的工作。
这是我想两个数据库learning
和pricing
>>
CREATE PROCEDURE `xxxx`(A int(1))
begin
case A
when 1 then update learning.GAUL set user='OBELIX' where id=1;
when 0 then update pricing.K1 set amntIN='500' where account=1;
else
select 'DUMMY';
END CASE;
END
之间进行类似的更新所以基本上第一次更新都将导致一个受影响的行样本程序:第二个将导致在2影响行。
我打电话给他们:
mysql> call xxxx(1);
Query OK, 1 row affected (0.05 sec)
mysql> call xxxx(0);
Query OK, 3 rows affected (0.12 sec)
mysql> call xxxx(3);
+-------+
| DUMMY |
+-------+
| DUMMY |
+-------+
1 row in set (0.00 sec)
它不工作,程序被创建,但在调用它时,它给出了一个错误 –
@avinashThakur它给出了什么样的错误,当你调用它时? – Krishnakumar
@avinashThakur我在答案中添加了我的示例。让我知道你得到了什么错误。 – Krishnakumar
下面的脚本做了期待:
mysql> DROP PROCEDURE IF EXISTS `p_samp`;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE IF EXISTS `database2`.`sample2`,
-> `database1`.`sample1`;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP DATABASE IF EXISTS `database2`;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP DATABASE IF EXISTS `database1`;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE DATABASE IF NOT EXISTS `database1`;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE DATABASE IF NOT EXISTS `database2`;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE TABLE IF NOT EXISTS `database1`.`sample1` (
-> `id` SERIAL,
-> `name` VARCHAR(255)
->);
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE IF NOT EXISTS `database2`.`sample2` (
-> `id` SERIAL,
-> `name` VARCHAR(255)
->);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO `database1`.`sample1`
-> (`name`)
-> VALUES
-> ('sam in db1');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO `database2`.`sample2`
-> (`name`)
-> VALUES
-> ('sam in db2');
Query OK, 1 row affected (0.00 sec)
mysql> DELIMITER //
mysql> CREATE PROCEDURE `p_samp` (
-> `p_id` BIGINT UNSIGNED,
-> `p_table_choice` CHAR(1)
->)
-> BEGIN
-> CASE `p_table_choice`
-> WHEN 'A' THEN
-> UPDATE `database1`.`sample1`
-> SET `name` = 'sam'
-> WHERE `id` = `p_id`;
-> WHEN 'B' THEN
-> UPDATE `database2`.`sample2`
-> SET `name` = 'sam'
-> WHERE `id` = `p_id`;
-> END CASE;
-> END//
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> SELECT
-> `id`,
-> `name`
-> FROM
-> `database1`.`sample1`;
+----+------------+
| id | name |
+----+------------+
| 1 | sam in db1 |
+----+------------+
1 row in set (0.00 sec)
mysql> SELECT
-> `id`,
-> `name`
-> FROM
-> `database2`.`sample2`;
+----+------------+
| id | name |
+----+------------+
| 1 | sam in db2 |
+----+------------+
1 row in set (0.00 sec)
mysql> CALL `p_samp`(1, 'A');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT
-> `id`,
-> `name`
-> FROM
-> `database1`.`sample1`;
+----+------+
| id | name |
+----+------+
| 1 | sam |
+----+------+
1 row in set (0.00 sec)
mysql> SELECT
-> `id`,
-> `name`
-> FROM
-> `database2`.`sample2`;
+----+------------+
| id | name |
+----+------------+
| 1 | sam in db2 |
+----+------------+
1 row in set (0.00 sec)
mysql> CALL `p_samp`(1, 'B');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT
-> `id`,
-> `name`
-> FROM
-> `database1`.`sample1`;
+----+------+
| id | name |
+----+------+
| 1 | sam |
+----+------+
1 row in set (0.00 sec)
mysql> SELECT
-> `id`,
-> `name`
-> FROM
-> `database2`.`sample2`;
+----+------+
| id | name |
+----+------+
| 1 | sam |
+----+------+
1 row in set (0.00 sec)
- 1. 如何通过php计算mysql数据库中两个不同行的两个不同的值
- 2. mysql命令行通过记录与两个不同的值
- 3. 在Vb.net中同时使用两个不同的存储过程保存到两个不同的表中
- 4. 通在存储过程中两个不同的中国话
- 5. 如何实时同步两个不同的mysql数据库表?
- 6. 通过两个不同的参数
- 7. 在两个不同的过程中更新和删除实体
- 8. 如何在单个存储过程中合并两个不同的SQL Server 2012数据库表?
- 9. 同步来自两个不同PostgreSQL数据库的两个表
- 10. SQL Server:如何同步不同数据库中的两个表?
- 11. 如何使用存储过程从两个不同的表中获取数据?
- 12. LINQ查找在两个单独的表中不同的记录
- 13. 提取两个不同表中的列和更新库存
- 14. 通过在不同服务器上的两个数据库中连接两个表来查询数据
- 15. 如何在两个不同的数据库中连接两个表?
- 16. Postgres通过两个不同的程序访问单个列
- 17. 如何通过SSH为两个不同的存储库设置两个不同的Github帐户?
- 18. 如何从一个MySQL查询中的两个不同表中选择记录?
- 19. 如何从单个MySQL查询中的两个不同表中获取数据?
- 20. 如何通过不同的列名称合并两个数据?
- 21. 同时更新两个不同的数据库
- 22. 通过jekins在两个不同的文件夹中的同一工作区下签出两个git存储库
- 23. 来自两个不同数据库表的更新对象
- 24. 如何发送两个不同的数据到两个不同的表中,从cakephp中同一个控制器中的两个不同的动作?
- 25. 如何从两个不同的表中选择两个记录与一个查询在mysql中
- 26. 从单个存储过程的两个表中获取数据?
- 27. PHP - 在两个不同的表中显示数据库数据
- 28. 如何在Django中创建两个不同的登录表单?
- 29. 连接到单个类中的两个不同数据库
- 30. 从两个不同表中提取数据库中的数据
尝试:'更新database1.sample1 ...'和'更新database2.sample2'。 – wchiquito
此解决方案不起作用 –
请参见[https://stackoverflow.com/a/45739429/1316440](https://stackoverflow.com/a/45739429/1316440)。 – wchiquito