第一种用法:

--@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

sp_executesq用法的更多相关文章

  1. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  2. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  3. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  4. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  5. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  6. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  7. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  8. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

  9. 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)

    vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...

随机推荐

  1. cocos2dx中坐标系

    CCNode类的setPosition,getPosition函数如果是一个Node的Child则获取的坐标就是该Node的本地坐标 另一个关键问题就是在cocos2d-x里就是各种对象的大小问题.因 ...

  2. input标签name、value与id属性

    id是唯一标识符,不允许有重复值可以通过它的值来获得对应的html标签对象.相当于人的身份证具有唯一性 name:控件的名字,一个控件是否设置它的 name 属性是不会影响到这个网页的功能实现的.但是 ...

  3. p2114 起床困难综合症

    传送门 分析 orz zwj 最好想到的方法是我们枚举每一位是0还是1,然后暴力求出经过n个操作之后的结果来决定这一位是0还是1 然后我们发现这种暴力的做法居然能a 但是还有更好的方法 我们只考虑开始 ...

  4. $this->autoRender = false

    动作执行完之后禁止调用render()方法

  5. 数据结构 Job

    问题描述 有 n 项工作在等待队列中等待处理,编号为 1-n. 每个工作有个优先级 p.处理机同一时间只能处理一项工作.处理机决定接下来处理哪一项工作的方式为:从队首取出一项工作 x,若等待队列中没有 ...

  6. 2019年第十届蓝桥杯省赛-糖果(一维状压dp)

    看到20的数据量很容易想到状压dp. 开1<<20大小的数组来记录状态,枚举n个糖包,将其放入不同状态中(类似01背包思想) 时间复杂度O(n*(2^20)). import java.u ...

  7. 1506-122 (S) Expecting pointer to struct or union.

    __你们 大胆 猜 是什么错.. __ 很尴尬的错误..就是 结构体指针. ___只有结构体 指针 可以用 ->   这个符号哦.. 所以 你只要 将  ->  改成   .    , 就 ...

  8. java.io.FileNotFoundException: res/drawable/title_bar_shadow.9.png

    ERROR/AndroidRuntime(803): Caused by: java.io.FileNotFoundException: res/drawable/title_bar_shadow.9 ...

  9. maredit测试

    int main() { } void addTotail(ListNode *& pHead, int value) { ListNode *node = new ListNode(); n ...

  10. 用递归算法返回该元素id下面的所有子集id

    private List<int> listAreaId = new List<int>(); /// <summary> /// 递归获取本区域下面的所有子集 / ...