首页 > 语言 > 关键词  > MySQL,实现,SQL最新资讯  > 正文

MySQL实现SQL Server的sp_executesql

2008-11-20 15:05 · 稿源:天极

从MySQL 5.0 开始,支持了一个全新的SQL句法:

以下为引用的内容:

PREPARE stmt_name FROM preparable_stmt;

EXECUTE stmt_name [USING @var_name [, @var_name] ...];

{DEALLOCATE | DROP} PREPARE stmt_name;

通过它,我们就可以实现类似 MS SQL 的 sp_executesql 执行动态SQL语句!

同时也可以防止注入式攻击!


为了有一个感性的认识,

下面先给几个小例子:

以下为引用的内容:

mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';

mysql> SET @a = 3;

mysql> SET @b = 4;

mysql> EXECUTE stmt1 USING @a, @b;

+------------+

| hypotenuse |

+------------+

| 5 |

+------------+

mysql> DEALLOCATE PREPARE stmt1;


mysql> SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';

mysql> PREPARE stmt2 FROM @s;

mysql> SET @a = 6;

mysql> SET @b = 8;

mysql> EXECUTE stmt2 USING @a, @b;

+------------+

| hypotenuse |

+------------+

| 10 |

+------------+

mysql> DEALLOCATE PREPARE stmt2;

如果你的MySQL 版本是 5.0.7 或者更高的,你还可以在 LIMIT 子句中使用它,示例如下:mysql> SET @a=1;mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?";

以下为引用的内容:

mysql> EXECUTE STMT USING @a;

mysql> SET @skip=1; SET @numrows=5;

mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?, ?";

mysql> EXECUTE STMT USING @skip, @numrows; 使用 PREPARE 的几个注意点:

A:PREPARE stmt_name FROM preparable_stmt;

预定义一个语句,并将它赋给 stmt_name ,stmt_name 是不区分大小写的。

B: 即使 preparable_stmt 语句中的 ? 所代表的是一个字符串,你也不需要将 ? 用引号包含起来。

C: 如果新的 PREPARE 语句使用了一个已存在的 stmt_name ,那么原有的将被立即释放! 即使这个新的 PREPARE 语句因为错误而不能被正确执行。

D: PREPARE stmt_name 的作用域是当前客户端连接会话可见。

E: 要释放一个预定义语句的资源,可以使用 DEALLOCATE PREPARE 句法。

F: EXECUTE stmt_name 句法中,如果 stmt_name 不存在,将会引发一个错误。

G: 如果在终止客户端连接会话时,没有显式地调用 DEALLOCATE PREPARE 句法释放资源,服务器端会自己动释放它。

H: 在预定义语句中,CREATE TABLE, DELETE, DO, INSERT, REPLACE, SELECT, SET, UPDATE, 和大部分的 SHOW 句法被支持。

G: PREPARE 语句不可以用于存储过程,自定义函数!但从 MySQL 5.0.13 开始,它可以被用于存储过程,仍不支持在函数中使用! 下面给个示例:

以下为引用的内容:

CREATE PROCEDURE `p1`(IN id INT UNSIGNED,IN name VARCHAR(11))BEGIN lable_exit: BEGIN SET @SqlCmd = 'SELECT * FROM tA '; IF id IS NOT NULL THEN SET @SqlCmd = CONCAT(@SqlCmd , 'WHERE id=?'); PREPARE stmt FROM @SqlCmd; SET @a = id; EXECUTE stmt USING @a; LEAVE lable_exit; END IF; IF name IS NOT NULL THEN SET @SqlCmd = CONCAT(@SqlCmd , 'WHERE name LIKE ?'); PREPARE stmt FROM @SqlCmd; SET @a = CONCAT(name, '%'); EXECUTE stmt USING @a; LEAVE lable_exit; END IF; END lable_exit;END; CALL `p1`(1,NULL);CALL `p1`(NULL,'QQ');DROP PROCEDURE `p1`;

举报

  • 相关推荐
  • 国内MCP服务合集平台去哪看?MCP server资源平台推荐

    ​在当今人工智能技术飞速发展的时代,AI模型与外部工具和服务的交互能力正逐渐成为推动技术进步的关键因素。今天,我们聚焦于一个新兴的、极具潜力的平台——AIbase,它为全球的AI开发者和研究人员提供了一个前所未有的MCP(Model Context Protocol,模型上下文协议)服务器集合平台,助力AI技术的进一步发展。 AIbase平台致力于整合全球优质的MCP服务器资源,为开发者提供�

  • 小度首发智能硬件MCP Server,开启物理世界智能交互新时代

    小度科技正式推出MCP Server开放平台,支持开发者通过自然语言控制1800余家厂商的智能设备。该平台提供两大核心服务:小度音箱MCP Server支持设备控制、语音播报等功能;小度IoT MCP Server开放全屋设备控制、场景联动等能力。平台大幅降低开发门槛,开发者仅需简单配置即可调用API。小度已与美的、格力等1800余家厂商合作,覆盖智能音箱、智能屏等全场景设备,并打造超200万间智慧酒店客房。未来小度将持续深化MCP协议与生成式AI融合,推动智能家居向"万物AI互联"时代迈进。

  • AI日报:12306 MCP Server上线;百度推AI搜索助手Tizzy.ai;ChatGPT录音模式面向Plus用户开放

    【AI日报】今日AI领域重要动态:1)百度推出无广告智能搜索助手Tizzy.ai,整合影视资源与深度思考功能;2)12306开源火车票查询引擎上线,采用FastAPI架构实现秒级响应;3)ChatGPT向Plus用户全面开放录音功能,支持实时记录与内容总结;4)开源SaaS模板FireGEO助力快速构建现代化Web应用;5)国产工具ReadMeX可一键生成高质量GitHub文档;6)百度AI助手新增视频通话功能,支持方言识别;7)Jacky

  • MCP协议资源服务去哪找?国内MCP server资源网站推荐

    ​在人工智能技术飞速发展的今天,AI模型与外部工具和服务的交互需求日益增长。为了满足这一需求,一个名为 AIbase 的全球MCP服务器集合平台(https://mcp.aibase.cn/)应运而生,为开发者和企业提供了前所未有的便利和强大的功能支持。

  • Checkout.com正加速北美扩张:加拿大本地收单业务正式上线并宣布新管理层任命

    全球领先支付公司Checkout.com宣布进军加拿大市场,推出本地收单服务,并任命Zack Levine为北美地区营收负责人。该公司2024年北美业务增长超80%,在加拿大推出服务后将提供更全面的交易数据掌控和支付成功率。加拿大作为全球第九大电商市场,规模达520亿加元,62%消费者进行跨境网购。Checkout.com已在旧金山设立新办公室,战略布局北美增长引擎。Levine将统筹北美和以色列业务,助力企业把握数字支付转型机遇。公司目前为eBay、Klarna等国际品牌提供支付服务,通过集成多种支付方式提升商户支付体验。

  • MCP server资源网站去哪找?国内MCP服务合集平台有哪些?

    在人工智能飞速发展的今天,AI模型与外部世界的交互变得愈发重要。一个好的工具不仅能提升开发效率,还能激发更多的创意。今天,我要给大家介绍一个宝藏平台——AIbase(<https://mcp.aibase.cn/>),一个专注于MCP(Model Context Protocol)服务的全球集合平台,它正在悄然改变AI应用开发的格局。 平台精心挑选了全球最受欢迎的MCP服务进行推荐。这些服务经过了市场的检验,具�

  • 首届央国企数智化与转型战略成果发布会在京召开,TencentOS Server展示应用成果

    6月26日,首届央国企数智化转型战略成果发布会在京举行,发布《央国企数智化发展研究报告》等重要成果。腾讯云受邀参会,其自研操作系统TencentOS Server凭借"西游四件套"等创新技术方案获得关注。该系统已实现超1000万套部署,支撑金融、政务等行业国产化需求,具备三大优势:1)性能提升方面,CPU利用率提升15-45%,整机能耗降低5-10%;2)技术创新方面,独创qGPU虚拟化技术可降低60%硬件成本;3)生态适配方面,已完成与国产主流硬件的互认证。目前该系统已助力农业银行等金融机构实现5%-25%性能提升,并成为金融、党政领域首选方案。作为国内三家具备Linux研发能力的厂商之一,腾讯云将持续打磨技术,支撑企业数字化转型需求。

  • OpenAI发布ChatGPT Agent智能体:支持写代码、做PPT、分析金融

    OpenAI推出ChatGPT智能体,整合网页交互、数据搜索与多模态协作功能,可完成代码生成、PPT制作、金融分析等复杂任务。该智能体融合Operator的网页自动化操作、Deep Research的数据分析能力及优化后的GPT-4对话引擎三大核心模块。目前面向付费用户开放,Pro版近乎无限使用,其他版本每月限50次任务。OpenAI承认其仍存在金融建模需人工验证、非英语文本解析准确率低等技术局限,并

  • 刚刚,OpenAI通用智能体ChatGPT Agent正式登场

    ​Agent AI 时代,比我们想象中来得要早一些。 北京时间周五凌晨,OpenAI 突然开启了新产品直播。 本次发布的是全新的 ChatGPT Agent,它实现了通用智能体(Agent)能力的关键升级。

  • 忆联 Docker+MySQL 流控方案:打造安全高效存储底座,释放 AI 极致性能

    文章探讨了在AI时代背景下,基于Docker部署MySQL数据库的高效解决方案。通过Docker容器化技术,MySQL实现了灵活部署、资源高效利用和稳定隔离性,成为AI应用的首选数据库方案。测试结果显示,采用PCIe5.0企业级SSD配合Namespace技术和QoS优化策略,能精准控制性能偏差在2%以内,在混合读写场景下更可控制在1%以内。该方案显著提升了存储资源管理效率,为AI应用提供稳定可靠的数据存储支持,同时降低企业TCO成本,推动数据价值释放。