MySQL存储过程动态更改表名

2024-02-02

我想动态更改 sql 查询中表的名称。例如我有下一个存储过程:

CREATE PROCEDURE NewProc(IN tableName varchar(64),IN message text)
BEGIN
    INSERT INTO tableName VALUES (message);
END;

我需要改变表名在运行时,我可以这样做吗? 谢谢。


您必须使用动态 SQL 来prepare http://dev.mysql.com/doc/refman/5.1/en/prepare.html and execute http://dev.mysql.com/doc/refman/5.1/en/execute.html一个 SQL 字符串,以实现您所描述的目的。

在准备之前,必须将动态表名称(或列名称、或 SQL 关键字等)插入到 SQL 字符串中。您不能对这些动态元素使用查询参数。

将表名插入 SQL 查询时,请小心避免 SQL 注入漏洞。例如,您应该通过在信息图式 http://dev.mysql.com/doc/refman/5.1/en/tables-table.html.

我同意@OMG Ponies 的评论——这是一个代码气味 http://en.wikipedia.org/wiki/Code_smell您有多个具有相同结构的表,因此您想要对完全相同的列执行完全相同的插入。代码异味并不能保证你的设计很糟糕,但它值得考虑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL存储过程动态更改表名 的相关文章

  • play20 ebean 生成的 sql 在 postgresql 上抛出语法错误

    我正在尝试使用 postgresql 来启动我的 play20 应用程序 以便我可以使用并稍后部署到 Heroku 我跟着这个answer https stackoverflow com questions 12195568 errors
  • MySQL获取最后10条记录中的第一条记录

    在Mysql中 我试图获取最后10条记录中最旧的记录 为了得到最后 10 个我会简单地做SELECT FROM table ORDER BY id DESC LIMIT 10 为了获得最旧的 我只需使用 ASC 顺序 我需要首先按 DESC
  • 为什么我们不能有多个主键?

    我知道表中不能有超过 1 个主键 但技术原因是什么 直接拉取自SO https stackoverflow com questions 217945 can i have multiple primary keys in a single
  • 使用另一个表中的数据查找并替换 MySQL 中的字符串

    我有两个 MySQL 表 我想使用另一个表中的数据查找和替换一个表中的文本字符串 Table texts messages thx guys i think u r great thx again u rock Table dictiona
  • Sql 查询:Sum,表中所有可能的行组合

    SQL Server 2008 R2 表结构示例 create table TempTable ID int identity value int insert into TempTable values 6 insert into Tem
  • MongoDB 存储过程等效项

    我有一个包含商店列表的大型 CSV 文件 其中一个字段是邮政编码 我有一个名为 ZipCodes 的独立 MongoDB 数据库 它存储任何给定邮政编码的纬度和经度 在 SQL Server 中 我将执行一个名为 InsertStore 的
  • 为什么 sql 字段名称中不应该包含逗号?

    人们一直告诉我列名中不应包含空格 我只是想知道 这是为什么 这是我为学校创建的一些数据库表遇到的问题 字段名称包括 Preble 和 Darke 相反 它们需要是 普雷布尔县 俄亥俄州 和 达克县 俄亥俄州 如果它们是行名称 我只需创建一个
  • 混合语言源目录布局

    我们正在运行一个使用多种不同语言的大型项目 Java Python PHP SQL 和 Perl 到目前为止 人们一直在自己的私有存储库中工作 但现在我们希望将整个项目合并到一个存储库中 现在的问题是 目录结构应该是什么样的 我们应该为每种
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • mySQL 返回可能有重复项的随机行

    我正在尝试随机化一定数量的行 但假设数据库中只有 4 行 而我需要获得 6 个随机行 我希望有可能 即使表中有超过 6 行 产生重复的行行 这在 mySQL 中很容易实现吗 我当前的查询是这样的 SELECT FROM winners OR
  • 为 Mariadb 安装连接器 C

    所以 我想使用 Mariadb 有一个连接器 C https downloads mariadb org connector c https downloads mariadb org connector c 我该如何安装它 坦白说 它的文
  • 如何在SQL Server数据库表列中存储图像[重复]

    这个问题在这里已经有答案了 我有一张名为FEMALE在我的数据库中 它有ID as Primary Key 它有一个Image column 我的问题是如何使用 SQL 查询存储图像 尝试一下 insert into tableName I
  • 使用 EXPLAIN 进行 MYSQL 存储过程调用

    如何分析和使用 EXPLAIN 来调用我的存储过程 我需要优化查询时间 但是似乎没有地方可以执行 EXPLAIN 调用 proc name 你可以试试 set profiling 1 call proc name show profiles
  • 如何在 Laravel 中编写联合查询?

    我正在使用 laravel 5 0 并且我有 mysql 查询 SELECT surat masuk id surat surat masuk nomor surat FROM surat masuk WHERE EXISTS SELECT
  • PDO fetch() 失败时会抛出异常吗?

    有没有方法PDO语句 fetch http php net manual en pdostatement fetch php如果 PDO 错误报告系统设置为抛出异常 则在失败时抛出异常 例如 如果我设置 PDO ATTR ERRMODE g
  • Spark SQL/Hive 查询通过 Join 永远持续下去

    所以我正在做一些应该很简单的事情 但显然它不在 Spark SQL 中 如果我在 MySQL 中运行以下查询 查询将在不到一秒的时间内完成 SELECT ua address id FROM user u inner join user a
  • 将列的值添加到 LIKE 语句中?

    我有 3 个标签表 标签类别和使用过的标签 我想要获取所有标签的列表以及已使用标签的计数 所使用标签的格式是每个具有标签的文档 ID 的逗号分隔值 我一直在尝试类似的方法 但无法将tags tag 字段的值插入到LIKE 语句中 SELEC
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • 如何检测 Postgres 中持有锁的查询?

    我想不断跟踪 postgres 中的互锁 我碰到锁具监控 https wiki postgresql org wiki Lock Monitoring文章并尝试运行以下查询 SELECT bl pid AS blocked pid a us
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我

随机推荐

  • 如何计算SQL中不同项目的数量

    数据库结构 Clubs ID ClubName Teams ID TeamName ClubID Players ID Name Registrations PlayerID TeamID Start date End date Seaso
  • 计算 GPU 上的彩色像素 - 理论

    我有一张 128 x 128 像素的图像 它被分解为 8 x 8 的网格 每个网格块包含 16 x 16 像素 要求 我想计算我的图像包含多少个黑色像素 直接的方法 I could通过逐行 逐列检查整个图像并检查像素是否为黑色来实现此目的
  • 如何编译 ast.Expr?

    import ast code 1 1 expr ast parse code body 0 print type expr compile ast Expression expr string eval gets me class ast
  • Rails + Amazon RDS:延迟问题

    我有一个应用程序 其数据库正在迁移到亚马逊RDS 由于 RDS 和我们的服务器之间的查询延迟 例如仅由于查询而导致加载时间长达 30 秒 我的性能显着下降 没有显式缓存 并且请求可以进一步优化 但这仍然比本地数据库慢 10 倍以上 这种业绩
  • 使用 gorilla/mux URL 参数的函数的单元测试

    TLDR gorilla mux 过去不提供设置 URL 变量的可能性 现在确实如此 这就是为什么第二高得票数的答案在很长一段时间内都是正确的答案 原始问题如下 这就是我想做的 main go package main import fmt
  • html - 像链接一样的表格行

    我无法将表格行设置为某些内容的链接 我只能使用 css 和 html 我尝试了从 div in row 到其他东西的不同操作 但仍然无法使其工作 您有两种方法可以做到这一点 使用 JavaScript tr 使用锚点 tr td a hre
  • C++ 中线程的简单示例

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 有人可以发布一个在 C 中启动两个 面向对象 线程的简单示例吗 我正在寻找实际的 C 线
  • 如何为tomcat maven插件添加存储库

    如何包含找到的 tomcat maven 插件的存储库here http tomcat apache org maven plugin 2 0 SNAPSHOT source repository html 我在中央 Maven 存储库中找
  • 将 JSON 反序列化为 Java 枚举

    我在 Android 上的 Java 中有以下枚举 我希望能够将传入的 JSON 字符串 对象中的整数反序列化为该枚举类型 我在 Jackson 和 GSON 上受到了关注 但在我正在使用的 JSON org 包上没有得到任何关注 有没有简
  • FParsec 在可选解析器上失败

    我目前正在学习 FParsec 库 但遇到了一个问题 当我想解析一个可选字符串并随后继续正常解析时 FParsec 将在可选解析器上返回致命错误 而不是返回None正如我所期望的 下面的工作代码示例说明了我的观点 open System o
  • Apache Beam:如何同时创建许多经历相同 PTransform 的 PCollection?

    提前致谢 问题 我在谷歌云上有很多文件 对于每个文件我都必须 获取文件 对每个文件进行一系列 Google Cloud Storage API 调用以对其进行索引 例如 name blob name size blob size unzip
  • Ant 构建失败,没有可见错误

    编辑 我最终在 Eclipse 中设置了整个项目并能够构建它 我不确定为什么会出现这个问题 希望我永远不需要找出答案 我遇到一个问题 我的构建报告 构建失败 但没有报告任何错误 我正在构建一个包含大量旧代码的大型应用程序 现在我很乐意修改这
  • select * 的使用是否合理?

    我一直向我的开发人员宣讲SELECT 是邪恶的 应该像瘟疫一样避免 有没有什么情况可以证明它是合理的 我不是在谈论COUNT 大多数优化器都能弄清楚 Edit 我说的是生产代码 我看到的关于这种不良做法的一个很好的例子是一个遗留的 asp
  • 我们可以通过jmeter.bat和ApacheJMeter.jar打开JMeter。有什么不同?

    我们可以通过以下方式打开JMeterjmeter bat and ApacheJMeter jar 它们之间有什么区别 ApacheJMeter jar 文件是一个可执行 jar 因此如果它与 java 应用程序关联 则可以通过在 wind
  • 当组合框获得焦点时展开组合框及其项目

    每当组合框获得焦点时 我想扩展组合框的高度 我使用以下代码来扩展组合框的高度
  • 如何在Windows上安装PyQt5?

    当我尝试使用命令在 Windows 上安装 PyQt5 时 python configure py 我收到此错误 Error Make sure you have a working Qt qmake on your PATH 我从 得到了
  • 如何使用volley库解析android中的嵌套json数组

    我以下面的格式嵌套了 json 数组 我正在使用 volley 库进行 JSON 解析 City name Mumbai Mumbai area andheri diler DName yuvraj area jogeshwari area
  • 找不到适合我的班级的编解码器

    我有一个名为 Signal 的简单类 类如下所示 public class Signal private String id private Date timestamp public String getId return id publ
  • 在 Windows 服务中运行 powershell 脚本

    我有一个运行良好的 powershell 脚本 我在 power shelle 命令行中调用此脚本 PS C gt myscript ps1 var1 variable1 var2 variable2 我需要使用愚蠢的 sc create
  • MySQL存储过程动态更改表名

    我想动态更改 sql 查询中表的名称 例如我有下一个存储过程 CREATE PROCEDURE NewProc IN tableName varchar 64 IN message text BEGIN INSERT INTO tableN