当前位置: 首页 > 编程笔记 >

在MySQL存储过程中实现动态SQL查询?

薛寒
2023-03-14
本文向大家介绍在MySQL存储过程中实现动态SQL查询?,包括了在MySQL存储过程中实现动态SQL查询?的使用技巧和注意事项,需要的朋友参考一下

对于存储过程中的动态SQL查询,请使用PREPARE STATEMENT的概念。让我们首先创建一个表-

mysql> create table DemoTable2033
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> Name varchar(20)
   -> );

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable2033(Name) values('Chris');

mysql> insert into DemoTable2033(Name) values('Bob');

mysql> insert into DemoTable2033(Name) values('David');

mysql> insert into DemoTable2033(Name) values('Mike');

使用select语句显示表中的所有记录-

mysql> select *from DemoTable2033;

这将产生以下输出-

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Chris |
| 2  | Bob   |
| 3  | David |
| 4  | Mike  |
+----+-------+
4 rows in set (0.00 sec)

以下是创建存储过程并实现动态SQL的查询-

mysql> delimiter //
mysql> create procedure dynamic_query()
   -> begin
   -> set @query=concat("select *from DemoTable2033 where Id=3");
   -> prepare st from @query;
   -> execute st;
   -> end
   -> //

mysql> delimiter ;

调用存储过程-

mysql> call dynamic_query();

这将产生以下输出-

+----+-------+
| Id | Name  |
+----+-------+
| 3  | David |
+----+-------+
1 row in set (0.04 sec)
 类似资料:
  • 问题内容: 我在存储过程中创建一个动态查询。我的存储过程如下: 当我尝试通过以下调用运行它时: 我收到以下错误消息: 错误代码:1054。“ where子句”中的未知列“ SPA” 我在没有where条件的情况下进行了测试,并且工作正常,但是在where条件不起作用的情况下,我尝试使用@和变量名一起使用,但仍然无法正常工作。 谢谢你的帮助。 问题答案: 您错过了条款中的引号。 尝试这样: 说明 :

  • 问题内容: 如何在MySQL存储过程中构建和使用动态SQL? 问题答案: 我不相信MySQL支持动态sql。您可以执行类似但不同的“准备”语句。 这是一个例子: 准备好的语句通常用于查看给定查询的执行计划。由于它们是使用 execute 命令执行的,并且可以将 sql 分配给变量,因此您可以近似地估计一些与动态sql相同的行为。 这是一个很好的链接: 不要忘记使用最后一行取消分配! 祝好运!

  • 本文向大家介绍MySQL 存储过程中执行动态SQL语句的方法,包括了MySQL 存储过程中执行动态SQL语句的方法的使用技巧和注意事项,需要的朋友参考一下

  • 主要内容:查看存储过程的状态,查看存储过程的定义创建好存储过程后,用户可以通过 SHOW ATATUS 语句来查看存储过程的状态,也可以通过 SHOW CREATE 语句来查看存储过程的定义。本节主要讲解查看存储过程的状态和定义的方法。 查看存储过程的状态 MySQL 中可以通过 SHOW STATUS 语句查看存储过程的状态,其基本语法形式如下: SHOW PROCEDURE STATUS LIKE 存储过程名; 用来匹配存储过程的名称,LI

  • 我是MySQL存储过程的新手。不知道为什么我会出现以下错误。请帮我调试一下。 1064年的今天,您的SQL语法出现错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第3行的user_-username=@th'中使用near'作为该用户的id,该用户的全名 表名:user_master 用户id密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密

  • 问题内容: 我想在sql查询中更改表的动态名称。例如,我有下一个存储过程: 我需要在运行时更改 tableName ,我可以这样做吗?谢谢。 问题答案: 您必须使用动态SQL来准备和执行SQL字符串,以实现您所描述的内容。 在准备之前,必须将动态表名称(或列名称或SQL关键字等)内插到SQL字符串中。您不能将查询参数用于这些动态元素。 当您将表名称插入到SQL查询中时,请小心避免SQL注入漏洞。例