动态语句SQL语句写法

  1. /******************************************************************************************************************************************************
  2. 动态语句语法:exec/sp_executesql语法
  3. 整理人:中国风(Roy)
  4. 日期:2008.06.06
  5. ******************************************************************************************************************************************************/
  6. 动态语句语法:
  7. --方法1查询表改为动态
  8. select * from sysobjects
  9. exec(‘select ID,Name from sysobjects‘)
  10. exec sp_executesql N‘select ID,Name from sysobjects‘--多了一个N为unicode
  11. --方法2:字段名,表名,数据库名之类作为变量时,用动态SQL
  12. declare @FName varchar(20)
  13. set @FName=‘ID‘
  14. exec(‘select ‘[email protected]+‘ from sysobjects where ‘[email protected]+‘=5‘ )
  15. declare @s varchar(1000)
  16. set @s=N‘select ‘[email protected]+‘ from sysobjects where ‘[email protected]+‘=5‘
  17. exec sp_executesql @s--会报错
  18. declare @s nvarchar(1000)--改为nvarchar
  19. set @s=N‘select ‘[email protected]+‘ from sysobjects where ‘[email protected]+‘=5‘
  20. exec sp_executesql @s--成功
  21. --方法3:输入参数
  22. declare @i int,@s nvarchar(1000)
  23. set @i=5
  24. exec(‘select ID,Name from sysobjects where ID=‘[email protected])
  25. set @s=‘select ID,Name from sysobjects where [email protected]‘
  26. exec sp_executesql @s,N‘@i int‘,@i--此处输入参数要加上N
  27. --方法4:输出参数
  28. declare @i int,@s nvarchar(1000)
  29. set @s=‘select @i=count(1) from sysobjects‘
  30. --用exec
  31. exec(‘declare @i int ‘[email protected]+‘ select @i‘)--把整个语句用字符串加起来执行
  32. --用sp_executesql
  33. exec sp_executesql @s,N‘@i int output‘,@i output--此处输出参数要加上N
  34. select @i
  35. --方法5:输入输出
  36. --用sp_executesql
  37. declare @i int,@con int,@s nvarchar(1000)
  38. set @i=5
  39. select @s=‘select @con=count(1) from sysobjects where ID>@i‘
  40. exec sp_executesql @s,N‘@con int output,@i int‘,@con output ,@i
  41. select @con
  42. --用exec
  43. declare @i int,@s nvarchar(1000)
  44. set @i=5
  45. select @s=‘declare @con int select @con=count(1) from sysobjects where ID>‘+rtrim(@i)+‘ select @con‘
  46. exec(@s)

http://blog.csdn.net/roy_88/article/details/3020586

时间: 2024-10-28 11:22:57

动态语句SQL语句写法的相关文章

模拟Hibernate动态生成SQL语句

这里有一个xml配置文件,也就是Hibernate框架中会用到的POJO和数据库的映射文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://www.hibernate.org/dtd/hibernate-

自定义ORMapping—动态生成SQL语句

概述 之前在自定义ORMapping--关系表转换为实体或实体集合对象中提到过ORMapping的东西,在那片博客中也有ORMapping实现的一个简单思路,当时只实现了关系表转换为实体或实体集合这个功能,没有实现动态生成SQL这个部分,本片博客就是完善之前的那片博客,实现动态生成SQL语句这么一个功能. 实现思路 1.创建两个自定义特性,分别为表特性和字段特性,目的就是给相应的实体类的类名和属性名,打上相应的特性,从而创建类名和表名,属性和表字段名之间的对应关系 2.创建一个特性解析类,用来解

Mybatis之动态构建SQL语句

今天一个新同事问我,我知道如何利用XML的方式来构建动态SQL,可是Mybatis是否能够利用注解完成动态SQL的构建呢?!!答案是肯定的,MyBatis 提供了注解,@InsertProvider,@UpdateProvider,@DeleteProvider 和@SelectProvider,来帮助构建动态 SQL 语句,然后让MyBatis 执行这些 SQL 语句. 1.@InsertProvider 1.1简单示例使用 创建一个 TutorDynaSqlProvider.java 类,以

java动态拼接sql语句并且执行时给sql语句的参数赋值

问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 1.就拿我上面的那个多条件模糊查询为例,第一步是拼接sql语句,先定义一个通用的sql语句,String sql = "select * from user where 1 = 1 ";这里添加where 1= 1是一个小技巧,方便后面sql语句的拼接. String sql = &quo

sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取

原文:sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取 在多人开发中最头疼的是人少事多没有时间进行codereview,本来功能都没时间写,哪有时间来开会细细来分析代码.软件能跑就行,但是一些影响性能的语句写出来,有可能本人都不知道.找就更 麻烦了.幸亏sqlserver提供了工具可以导出执行语句进行分析.可以看看是哪些语句影响整体性能.工具叫sql server profiler,这玩意可以抓取实例上执行的所有语句\死锁\事物,为分析提供帮助. 开始->sqlserver目录-

动态拼接SQL语句

1.参考官方文档 ? if:字符判断 ? choose (when, otherwise):分支选择 ? trim (where, set):字符串截取:其中where标签封装查询条件,set标签封装修改条件 ? foreach 2.if案例 1)在EmployeeMapper接口中添加一个方法: //携带了哪个字段,查询条件就带上哪个字段的值 public List<Employee> getEmployeeByConditionIf(Employee employee); 2).如果要写下

PL/SQL(五)PL/SQL中动态执行SQL语句

在PL/SQL程序开发中,可以使用DML语句和事务控制语句,但是还有很多语句(比如DDL语句)不能直接在PL/SQL中执行.这些语句可以使用动态SQL来实现. PL/SQL块先编译然后再执行,动态SQL语句在编译时不能确定,只有在程序执行时把SQL语句作为字符串的形式由动态SQL命令来执行.在编译阶段SQL语句作为字符串存在,程序不会对字符串中的内容进行编译,在运行阶段再对字符串中的SQL语句进行编译和执行,动态SQL的语法是: 语法格式:动态SQL EXECUTE IMMEDIATE 动态语句

如何根据实体动态生成sql语句

背景: 在项目开发的过程中,往往需要根据实体的值来修改sql语句,比如说,有一个学生类Stu,代码如下: 1 public class Student 2 { 3 public int ID { get; set; } 4 public string Name { get; set; } 5 public int Grade { get; set; } 6 public string Nick { get; set; } 7 public string City { get; set; } 8

关于动态执行sql语句出现

如例: DECLARE @sql NVARCHAR(max); DECLARE @longid BIGINT =100; SET @sql='select '+@longid; 执行之后提示  从数据类型 varchar 转换为 bigint 时出错. 刚开始以为是要输出bigint类型,但是sql动态执行无法识别,于是改成了 SET @sql='select '+CONVERT(BIGINT,@longid); 但是还是报同样的错误,后面试用这种方法就没有问题了 SET @sql='selec