看了下源码: 1、workflow中仅实现了COM_QUERY协议 2、libmysql中mysql_stmt_execute实现的源码,其底层发送的依次是下列请求: COM_STMT_PREPARE请求 预编译请求 COM_STMT_SEND_LONG_DATA请求 发送参数值给预编译语句,预编译中有几个就得发几个该请求,参数值按内容copy到数据包 COM_STMT_EXECUTE请求 执行预编译语句
所以我理解 Prepare Satement 不是建立在原始SQL语句上的功能,它有自己特定的请求协议,只是用原始的SQL语句也能实现。(不确定理解的对不对。。。。)
根据目前workflow提供的接口,好像也只能对参数值做下转义处理,然后拼接出SET语句执行,我还没有想到怎样封装能避免这种手动拼接SQL的方法。
要想实现libmysql预编译相关接口功能,可能还是需要在workflow底层实现COM_STMT_...相关的通信协议,并提供相应接口。。。。