• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 动态SQL语句使用心得

动态SQL语句使用心得

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了动态,SQL语句等相关知识,希望本文的分享对您有所帮助

最近在学习期间接触了动态SQL操作,然后小总结了一下给出自己的心得。

在我们的项目中经常需要用到分面功能,而我以前呢用的方法现在看起来都是那麽的笨拙,当时是这样做的,每当要进行数据分页时就专们针对那个表做分页,大家别笑,以前确实好笨。呵呵,虽然当时也有一个想法就是希望能够传入一张表进去进行操作,但那样的话编译是通不过的,因为FROM后面操作的是表变量,而不能是我们自定义的变量,所以当时没有深追究,现在为当时不深入学习而BS一下。

动态SQL需要准备以下内容:

1、@SQL 拼接后的SQL语句,可以是你任意需要的SQL语句如:SET @SQL='SELECT * FROM table WHERE ID=@id' 注意此处的@SQL必须且只能是NTEXT、NVARCHAR、NCHAR类型,如果是其它类型的话其它地方明明没有问题却会报 "过程需要类型为 'ntext/nchar/nvarchar' 的参数"这个错误。同时,如果这里需要传入表名称的话则应这样写:SET @SQL='SELECT * FROM '+@table+'WHERE ID=@id' ,因为上面传入的值是文本类型故会报错。

2、@parameters 所拼接的SQL语句里面的参数,按上面的话这里应该是:SET @parameters='@id INT' 同时这个参数的类型也必须且只能是NTEXT、NVARCHAR、NCHAR类型
3、调用:sp_executesql param1(,param2) 其中param1一般我们作为是@SQL,后面的参数则是我们在@sql中的参数了,但这里要注意的是传参的时候必须是对应的:

代码如下:
  DECLARE @InputId INT ;
  SET @InputId=1;
   param2为:@id=@InputId;


以下是写的一个简单的通用分页,有需要可以自行修改:

代码如下:
ALTER PROCEDURE sp_pager
(
@TableName nvarchar(50), -- 表名
@ReturnFields nvarchar(200) = '*', -- 需要返回的列
@PageSize int = 50, -- 每页记录数
@PageIndex int = 1 -- 当前页码
)
AS
DECLARE @SQL NVARCHAR(1000)
DECLARE @paramters NVARCHAR(200)
BEGIN
SET NOCOUNT ON
SET @SQL='SELECT '+@ReturnFields+' FROM '+@TableName+' WHERE ID>(SELECT TOP 1 ID FROM (SELECT TOP '+CAST(@PageSize*@PageIndex AS VARCHAR)+' ID FROM '+@TableName+ ' ORDER BY ID )AS A ORDER BY ID DESC)'
PRINT @SQL
EXECUTE sp_executesql @SQL,@paramters,@columns=@ReturnFields
END
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL动态创建表,数据分表的存储过程
  • mysql 显示SQL语句执行时间的代码
  • mysql 动态生成测试数据
  • mysql 动态执行存储过程语句
  • 讲解SQL Server执行相关动态SQL的正确方式
  • MySQL入门之动态SQL工具实现
  • 加速PHP动态网站 MySQL索引分析和优化
  • Oracle9i 动态SGA,PGA特性探索
  • 动态SQL中返回数值的实现代码
  • sqlserver 动态创建临时表的语句分享

相关文章

  • 2018-12-05mysql_fetch_field()函数的用法汇总
  • 2018-12-05提升SQL Server速度 整理索引碎片
  • 2018-12-05Mysql学习总结(16)Mysql之数据库设计规范_MySQL
  • 2017-05-11Mysql存储过程循环内嵌套使用游标示例代码
  • 2018-12-05nignx负载均衡算法分享
  • 2018-12-05 IDE如何使用?总结 IDE实例用法
  • 2018-12-05Oracle三种上载文件技术
  • 2018-12-05Mysql入门基础 数据库创建篇
  • 2018-12-05MySQL之——如何防止人为误操作MySQL数据库
  • 2017-12-08更改mysql配置,使得导入数据库速度加快

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 彻底卸载MySQL的方法分享
    • mysqlslap的使用方法介绍
    • 谈谈MySQL的存储引擎
    • 对mysql语句的性能分析与优化
    • 一些SQLServer存储过程参数及举例
    • mysql大小写问题及解决方案
    • mysql中如何配置ssl_key和ssl-cert与ssl-ca的路径以及建立ssl连接的实例
    • sqlserver 中一些常看的指标和清除缓存的方法
    • MySQL使用命令备份和还原数据库
    • 在SQL中获取一个长字符串中某个字符串出现次数的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有