COM_STMT_PREPARE 1
2024-09-05 03:46:30
mysqld_stmt_prepare void mysqld_stmt_prepare(THD* thd,
const char * query,
uint length,
Prepared_statement * stmt
)
功能:
COM_STMT_PREPARE handler.
给定带有参数标志的查询字符串,从中创建预处理语句并将PS发送给客户端。
如果在查询中找到参数标志,使用Item_param保存信息以及在lex->param_array中维护列表,以便可以在不遍历所有字段项的情况下进行快速直接的检索。
如果成功,一个新的statement id和元数据发送给客户端,否则在THD中设置错误信息。
参数:
thd : 线程句柄
query: 要预处理的查询
length:查询字符串的长度,包括忽略末尾的NULL或者引用字符。
stmt: 用于预处理的prepared_statement
注意:
此函数解析查询并将参数和结果集元数据信息的总数发送回客户端(如果有),而不执行查询,即没有任何日志/磁盘写入。 这允许在执行期间重新执行查询而无需重新解析。
mysql_stmt_precheck()
bool mysql_stmt_precheck(THD * thd,
const COM_DATA* com_data,
enum enum_server_command cmd,
Prepared_statement **stmt
)
功能:
搜索具有指定id的语句并对其进行验证。
参数:
thd:[in]线程句柄
com_data:[in]命令数据
cmd:[in]要执行的命令类型
stmt:[out]指向Prepared_statement的指针,以便在找到时存储它
mysql_stmt_prepare() in STDCALL mysql_stmt_prepare(MYSQL_STMT * stmt,
const char *query
ulong length
)
mysql_stmt_init() MYSQL_STMT * STDCALL mysql_stmt_init(MYSQL * mysql)
Prepared_statement类
Prepared_statement: 一个可以包含占位符的语句。
#include <sql_prepare.h>
Prepared_statement继承图:
公共的成员函数
Prepared_statement (THD *thd_arg) | |
virtual | ~Prepared_statement () |
Destroy this prepared statement, cleaning up all used memory and resources. More... | |
virtual void | cleanup_stmt () |
bool | set_name (const LEX_CSTRING &name) |
const LEX_CSTRING & | name () const |
void | close_cursor () |
bool | is_in_use () const |
bool | is_sql_prepare () const |
void | set_sql_prepare () |
bool | prepare (const char *packet, size_t packet_length, bool force_primary_storage_engine) |
Parse statement text, validate the statement, and prepare it for execution. More... | |
bool | execute_loop (String *expanded_query, bool open_cursor) |
Execute a prepared statement. More... | |
bool | execute_server_runnable (Server_runnable *server_runnable) |
PSI_prepared_stmt * | get_PS_prepared_stmt () |
void | deallocate () |
Common part of DEALLOCATE PREPARE and mysqld_stmt_close. More... | |
bool | set_parameters (String *expanded_query, bool has_new_types, PS_PARAM *parameters) |
Assign parameter values either from variables, in case of SQL PS or from the execute packet. More... | |
bool | set_parameters (String *expanded_query) |
最新文章
- Linux命令工具 top详解
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- poj 3469
- Java 文件名操作的相关工具类
- linux下神奇的script命令
- android 分享到新浪微博
- C++ Primer 读书笔记: 第8章 标准IO库
- 关于Python网络爬虫实战笔记③
- Qt错误:类中使用Q_OBJECT宏导致undefined reference to vtable for ";xxx::xxx";错误的原因和解决方法
- webStrom2017.1版本如何添加vue.js插件
- RabbitMQ消息队列之二:消费者和生产者
- 浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式 [转载]
- 大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接
- PIGS POJ - 1149(水最大流)
- hadoop程序实例
- Java Runtime
- Ubuntu 18 开机启动慢
- Joyoi公路乘车(原tyvj1015)
- Python: 读写Excel(openpyxl / win32com.client)
- 20145203盖泽双《Java程序设计》第三周学习总结
热门文章
- git clone时加上--depth 1
- 做了一个非竞价排名、有较详细信息的程序员职位 match 网站
- leetcode903 Valid Permutations for DI Sequence
- 火狐低版本中显示时间格式为:yyyy-MM-dd hh:mm:ss,出现NaN
- Java线程安全队列Queue实现原理
- [CF788B]Weird journey_欧拉回路
- windows下图形学视觉基本库安装不完全指南
- [转帖]华为鲲鹏云服务器实战:华为云鲲鹏KC1实例 vs. 阿里云G5实例
- 推荐:【视频教程】ASP.NET Core 3.0 入门
- C#传递参数调用exe程序