第一种用法:

--@sqlstring :就是你要执行的sql语句字符串
--@ParmDefinition: @sqlstring里边用到的参数在这里声明 输出的参数要加output
--sp_executesql:
--第一个参数sqlstring 就是执行的sql字符串了
--第二个参数@ParmDefinition是@sqlstring里边用到的参数在这里声明 输出的参数要加output
--最后的参数加output的参数是输出的参数(需要和外部的相对应的变量建立关联)
--中间的参数就是@sqlstring 里边用到的参数(需要和外部的相对应的变量建立关联)
--最后你可以 select 输出的参数 来查询(select @count)

--小结:1.@sqlString直接写需要执行的语句,动态参数用@custid形式标记
-- 2.@parmDefinition:为标记动态语句里面的参数及类型,返回标记output
-- 3.EXECUTE sp_executesql:执行,第一常数为动态sql语句,第二个参数为为动态sql语句参数,后面的参数为对应参数传入的值
GO
DECLARE @id INT;
DECLARE @sqlString NVARCHAR(500);
DECLARE @parmDefinition NVARCHAR(500);
DECLARE @count INT;

SET @id=144;

SET @sqlString=N'SELECT * FROM dbo.tb_invite_code WHERE custid=@custid ';
SET @sqlString=@sqlString+N' set @out=(SELECT COUNT(1) FROM dbo.tb_invite_code WHERE custid=@custid)';
SET @parmDefinition=N'@custid int,@out int output';

EXECUTE sp_executesql @SQLString,@parmDefinition,@custid= @id,@out= @count OUTPUT
SELECT @count
GO

第二中用法

--注意:
--1.EXEC(@sql):必须以这种变量形式来执行,直接拼接字符串会报错
--2.在@sql拼接中,如果有一个参数为NULL,则拼接出来的也为NULL,一般用ISNULL(@table,'Trade')来判断
--3.字符串拼接,就要将常数全部转换为字符串CAST(@havenum AS NVARCHAR(100))
--4.在拼接的时候,如果常数为字符串,参数两边要加上''
go
DECLARE @havenum INT ,@isDel INT,@sql NVARCHAR(2000),@table NVARCHAR(100)
SET @table=NULL
SET @havenum=0
SET @isDel=0
SET @sql='SELECT * FROM dbo.Share'+ISNULL(@table,'Trade')+' WHERE HaveNum='''
+CAST(@havenum AS NVARCHAR(100))+''''
+'and isDel='+CAST(@isdel AS NVARCHAR(100))
PRINT @sql
EXEC(@sql)
go

转载于:https://www.cnblogs.com/zhuyapeng/p/5498960.html

sp_executesq用法相关推荐

  1. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  2. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  3. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  4. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  5. python yield 和 yield from用法总结

    #例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...

  6. tf.nn.embedding_lookup()的用法

    函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...

  7. OpenMP用法大全

    OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...

  8. Dorado用法与示例

    Dorado用法与示例 dorado用后总结 一.dorado概念 dorado的产品全名是"dorado展现中间件".从产品形态上dorado由两部分组成,第一部分是一个具有AJ ...

  9. TensorFlow用法

    TensorFlow用法 什么是TensorFlow TensorFlow是一个开源软件库,用于使用数据流图进行数值计算.图中的节点表示数学运算,而图的边缘表示流动的多维数据数组(张量).这种灵活的体 ...

  10. TensorFlow Keras API用法

    TensorFlow Keras API用法 Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,可以编译和拟 ...

最新文章

  1. ShaderLab Syntax 基本语法
  2. 生成朋友圈转发点赞截图的小工具
  3. python适用场景_你真的了解Python吗?什么场景使用多线程,什么场景使用多进程?...
  4. 将String转换成Int数组-Java
  5. python get()函数_C++使用ffpython嵌入和扩展python(python2和python3)
  6. idhttp返回乱码_HTTP客户端POST方式中文编码(乱码)解决方案(转)
  7. 一款世界上最快的固态硬盘
  8. 视频课程-1小时上手 Spring Boot 及 达梦数据库 做数据展示后端
  9. JAVA Runtime.addShutdownHook()方法{拿到线程句柄,在程序关闭之前调用释放资源}
  10. MATLAB数字水印处理技术的实现
  11. Oracle排序查询语句
  12. 佟年计算机大赛,ACM大赛
  13. ios中常用英语单词汇总
  14. websocket错误码盘点
  15. 黑马程序员---继承(下)
  16. Java实现Base64、DES、AES、RSA加解密以及加密方式之间的区别
  17. 』 [大话IT]我编的计算机基础教材,大家批判批判
  18. 如何用计算机弹白山茶,白山茶-陈雪凝-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  19. 复盘 20160629
  20. 客制化键盘编程_客制化键盘QMK固件入门-修改keyboard和keymap

热门文章

  1. C++中清理map的代码
  2. 百度手机输入法中的五笔9键盘有问题?
  3. H264的编码负担约是解码的5-10倍
  4. l4d2服务器修改武器伤害,辐射4武器伤害及护甲修改攻略
  5. mysql 优化器_深入解析:从源码窥探MySQL优化器
  6. android av和hdmi输出切换代码,AV转HDMI转换器有用吗?
  7. mysql 插入数据 自增长_mysql插入数据后返回自增ID的方法
  8. 第一篇博客:WPF中 ScrollViewer控件的ScrollIntoView方法
  9. cnblog中添加数学公式支持
  10. 以线虫为模型模拟的神经网络,让机器人无需训练即可自动避开障碍物