【问题标题】:Execute SET statement before STORED PROCEDURE call在 STORED PROCEDURE 调用之前执行 SET 语句
【发布时间】:2012-08-15 20:40:31
【问题描述】:

我有一个简单的 C# 代码,它创建 MySQL 连接、带有参数的存储过程命令并返回 DataReader 对象。由于我们切换到 Percona Cluster,我想执行这个存储过程。带有本地标志(SET wsrep_on = 0;),因此当集群不可用时它将起作用。是否可以运行语句 SET wsrep_on = 0;直接在执行存储过程之前。?由于它是一个会话变量,它是否适用于连接池等?干杯

【问题讨论】:

  • 我猜更新SP是不可能的?
  • 更新 SP 不是问题,但在特定节点上我可以访问集群和非集群数据 - 如果集群通信失败,我需要能够访问本地数据副本,这就是为什么我需要设置 wsrep_on=0 并且需要在访问 SP 之前进行设置。

标签: c# mysql stored-procedures percona


【解决方案1】:

尝试像这样一次性执行 SQL。

"SET wsrep_on = 0; EXEC StoredProc @Param1;"

当我尝试使用 MSSQL 时它工作正常,但我现在手头没有 MySQL 来测试..

【讨论】:

  • OK 但是如何使用 MySqlCommand 对象执行它? MySqlCommand comm = new MySqlCommand("SP_NAME", conn); comm.CommandType = CommandType.StoredProcedure; comm.Parameters.Add(..); var reader = comm.ExecuteReader();是否可以将 SP_NAME 替换为“SET wsrep_on=0;SP_NAME”?
  • 而不是“SP_NAME”,而是像我向您展示的那样放入整个 SQL.. 并取出 comm.CommandType = CommandType.StoredProcedure;..
猜你喜欢
  • 2022-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
相关资源
最近更新 更多