SqlServer使用sp_executesql执行动态语句

这篇具有很好参考价值的文章主要介绍了SqlServer使用sp_executesql执行动态语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、sp_executesql 语法

功能描述:执行可多次重用的Transact-SQL语句或批处理,或动态生成的语句或批处理。Transact-SQL语句或批处理可以包含嵌入参数。

语法:

-- SQL Server、Azure SQL数据库、Azure SQL数据仓库、并行数据仓库的语法
sp_executesql [ @stmt = ] statement 
[  
  { , [ @params = ] N'@parameter_name data_type [ OUT | OUTPUT ][ ,...n ]' }  

     { , [ @param1 = ] 'value1' [ ,...n ] } 
] 

参数:

[ @stmt= ] statement

  • 是包含Transact-SQL语句或批处理的Unicode字符串。@stmt必须是Unicode常量或Unicode变量。不允许使用更复杂的Unicode表达式,例如用+运算符连接两个字符串。不允许使用字符常量。如果指定了Unicode常量,则必须以N作为前缀。
  • 例如,Unicode常量 N'sp_who' 有效,但字符常量 'sp_who' 无效。字符串的大小仅受可用数据库服务器内存的限制。在64位服务器上,字符串的大小限制为2GB,即nvarchar的最大大小(max)。
  • 提示:@stmt可以包含与变量名格式相同的参数,例如:

1

N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'

[ @params= ] N'@parameter_name data_type [ ,... n ] '

  • 是一个字符串,它包含嵌入@stmt中的所有参数的定义。字符串必须是Unicode常量或Unicode变量。每个参数定义都由一个参数名和一个数据类型组成。n是表示其他参数定义的占位符。@stmt中指定的每个参数都必须在@params中定义。如果@stmt中的Transact-SQL语句或批处理不包含参数,则不需要@params。此参数的默认值为空。

[ @param1= ] 'value1'

  • 参数字符串中定义的第一个参数的值。该值可以是Unicode常量或Unicode变量。必须为@stmt中包含的每个参数提供一个参数值。当@stmt中的Transact-SQL语句或批处理没有参数时,不需要这些值。

[ OUT | OUTPUT ]

  • 指示参数是输出参数。text、ntext和image参数可以用作输出参数,除非该过程是公共语言运行时(CLR)过程。使用output关键字的输出参数可以是游标占位符,除非该过程是CLR过程。

n

  • 是附加参数值的占位符。值只能是常量或变量。值不能是更复杂的表达式,如函数或使用运算符生成的表达式。

返回值:

  0(成功)或非零(失败)

二、使用案例

	 declare @sql nvarchar(1000),@tempScore decimal(18,2);
	 set @sql=N'select @tempScore=sum(num'+rtrim(ltrim(str(@dataid)))+')  from DataNum  where  zdposition like '''+@zdposition+'_%'' and CreateTime>= '''++@start++''' and CreateTime<= '''+@end+'''';
	 --print @sql;
	 exec sp_executesql  @sql,N'@tempScore decimal(18,2) output', @tempScore output;

更多:文章来源地址https://www.toymoban.com/news/detail-443199.html

SQL Server拼接字符串执行语句,错误提示: 转换成数据类型 int 时失败。

SqlServer 存储过程使用整理

SqlServer触发器使用整理

到了这里,关于SqlServer使用sp_executesql执行动态语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQLSERVER查看数据库日志方法和语句示例,已亲测。

    SQLSERVER查看数据库日志方法和语句示例,已亲测。 首先需要查看日志大小: EXEC sys.sp_enumerrorlogs; 可以获取存档编号(0指实时的),日期,日志大小 使用sql_devlopment工具;这里具体不在详细介绍了,很简单; **使用自带的 ​xp_readerrorlog 过程 ** xp_readerrorlog​ 一共有7个参数 :

    2023年04月10日
    浏览(35)
  • IDEA Java1.8通过sqljdbc4连接sqlserver插入语句

    1. 下载sqljdbc4:https://mvnrepository.com/artifact/com.microsoft.sqlserver.jdbc/sqljdbc4/4.0 下载后在IDEA放入仓库内,可以放在resources下,右键“add as library”。 2. 在控制面板中开启Telnet客户端,默认是不开启的。 若报错“ java.lang.classNotFoundException:com.microsoft.sqlserver.jdbc”说明1或2没有设置成功

    2024年02月09日
    浏览(35)
  • 11-3_Qt 5.9 C++开发指南_QSqlQuery的使用(QSqlQuery 是能执行任意 SQL 语句的类)

    QSqlQuery 是能执行任意 SQL 语句的类,如 SELECT、INSERT、UPDATE、DELETE 等,QSqlQuery 类的一些常用函数见表 11-11(省略函数中的 const ,省略缺省参数,不同参数的同名函数一般只给出一种参数形式)。 使用 QSqlQuery 执行不带参数的 SQL 语句时可以用 exec(QString)函数,如: 上面是

    2024年02月15日
    浏览(49)
  • MyBatis动态sql之批量修改、批量新增(使用foreach标签的一条sql语句解决)

            批量新增和批量修改在业务中是很常见的,一条sql访问数据库和通过代码循环体中循环访问数据库做单个数据新增修改相比较下:一条sql访问数据库性能上明显提升,代码且简洁明了 1、Mapper.java中 说明: 参数是list  2、Mapper.xml中 说明: 通过trim标签拼接前后缀和

    2024年02月10日
    浏览(52)
  • 使用MyBatis的mapper接口调用时有哪些要求?Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?

    1. Mapper接口方法名和mapper.xml中定义的每个 sql的id相同 2.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的 parameterType的类型相同 3.Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的 resultType的类型相同 4.Mapper.xml文件中的 namespace 即是 mapper接口的类路径 可以在

    2024年02月16日
    浏览(39)
  • SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML

    最近有一个项目在客户使用时发现死锁问题,用的数据库是SQLSERVER ,死锁的原因是有的客户经常去点报表,报表查询时间又慢,然后又有人在做单导致了死锁,然后主管要我们用SQLSERVER查询时要加with (NOLOCK),但是我在加完 with (NOLOCK) 后发现已经的用Mybatis-plus的 在mybatis里的分

    2024年02月12日
    浏览(43)
  • 【PostgreSQL内核学习(十)—— 查询执行(可优化语句执行)】

    声明 :本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵循合理使用原则,并在适用的情况下注明引用来源。 本文主要参考了《PostgresSQL数据库内核分析》一书    可优化语句 的共同特点是它们 被查询编译器处理后都会生成

    2024年02月15日
    浏览(53)
  • 【PostgreSQL内核学习(九)—— 查询执行(数据定义语句执行)】

    声明 :本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵循合理使用原则,并在适用的情况下注明引用来源。 本文主要参考了《PostgresSQL数据库内核分析》一书    数据定义语言(DDL,Data Definition Language) 是一类 用于定义数

    2024年02月16日
    浏览(44)
  • SQL语句的执行顺序

    1 from                找表 2 on                   关联条件帅选 3 join                 关联表操作 4 where             条件筛选 5 group by         进行分组 6 avg,sum…      执行函数 7 having            分组后筛选 8 select           

    2024年02月10日
    浏览(44)
  • JavaScript如何执行语句

    目录 语法/词法分析 预编译 解释执行 预编译什么时候发生 js运行三步曲 预编译前奏 预编译步骤 巩固基础练习 编译原理中的词法分析和语法分析是编译过程中的两个基本阶段。它们的区别如下: 1. 词法分析:词法分析阶段负责将源代码按照字符序列划分成一个个的词法单元

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包