SQL sp_executesql详细使用

SQL sp_executesql详细使用详情请查看microsoft:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-executesql-transact-sql?view=sql-server-2017CREATETABLE[dbo].[Test]( [ID][int]IDENTITY(1,…

大家好,又见面了,我是你们的朋友全栈君。

详情请查看microsoft:

https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-executesql-transact-sql?view=sql-server-2017

CREATE TABLE [dbo].[Test](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](50) NULL,
	[Num] [nvarchar](50) NULL,
	[CreateTime] [datetime] NULL,
 CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
insert into [Test] 
select '张三','2','2019-01-01'
union
select '张三','4','2019-02-01'
union
select '李四','3','2019-02-01'
union
select '李四','3','2019-03-01'

 

如果我需要查询name=‘李四’   and  num=‘4’ 的数据 并且知道总共有多少条数据

先不说其他的写法怎么实现  现在使用sp_executesql实现。

 

---------情况一-------------
declare @SQLOne nvarchar(500)
declare @countOne int
declare @NameOne nvarchar(50)
declare @NumOne nvarchar(50)

set @NameOne=N'李四'
set @NumOne=N'3'

set @SQLOne=N'select @count=count(*) from test where name=@name and num=@num';

--顺序一致
exec sp_executesql @SQLOne,N'@name nvarchar(50),@num nvarchar(50),@count int output ', @NameOne,@NumOne,@countOne output
--使用@name = value 并且顺序一致
exec sp_executesql @SQLOne,N'@name nvarchar(50),@num nvarchar(50),@count int output ', @name=@NameOne,@num=@NumOne,@count=@countOne output
--使用@name = value 顺序不一致
exec sp_executesql @SQLOne,N'@name nvarchar(50),@num nvarchar(50),@count int output ', @num=@NumOne,@name=@NameOne,@count=@countOne output


select @countOne,@NameOne,@NumOne

/*
第一:字符串必须是 Unicode 常量或 Unicode 变量. 如:N'select name from test'
第二:每个参数定义由参数名称和数据类型组成,可传递多个参数
第三:[ OUT | OUTPUT ]指示参数是输出参数
第四:动态Sql的参数列表与外部提供值的参数列表顺序必需一致
第五:一旦使用了 '@name = value' 形式之后,所有后续的参数就必须以 '@name = value' 的形式传递。
*/

如果我需要实现根据Name(非必填项)和CreateTime时间范围(非必填项)进行查询列表和总条数(为什么总需要总条数呢,如果查询分页的话可以参考这个需求+ROW_NUMBER()实现)

CREATE proc [dbo].[SP_test2]
@Name nvarchar(50),
@timeStart nvarchar(50),
@timeEnd nvarchar(50),
@totalCount int output
as
begin
declare @where nvarchar(500)
set @where=N' where 1=1 '
if @Name<>''
begin
set @where+=' and name='+''''+@Name+''''
end
if @timeStart<>''
begin
set @where+=' and CreateTime>='+''''+@timeStart+''''
end
if @timeEnd<>''
begin
set @where+=' and CreateTime<='+''''+@timeEnd+''''
end

declare @SQL nvarchar(500)
declare @SQL_count nvarchar(500)

/*查询totalCount*/
set @SQL_count=N'select @count=count(*) from test '+@where;
exec sp_executesql @SQL_count,N'@count int output',@count=@totalCount output

/*查询列表*/
set @SQL=N'select name,num,CreateTime from test  '+@where;
exec sp_executesql @SQL

end



 

declare @totalCount int

exec dbo.[SP_test2] '','2019-02-01',null,@totalCount output

select @totalCount as '总条数'

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143424.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [机器学习] 实验笔记 – 表情识别(emotion recognition)

    本文主要整理自笔者在表情识别(emotionrecognition)研究上的实验笔记资料,给出了表情识别常用的数据库,论文资料,识别方法,评价指标,以及笔者的实验笔记和实验结果。与读者分享,欢迎讨论。

    2022年4月9日
    137
  • xsync集群同步脚本「建议收藏」

    xsync集群同步脚本「建议收藏」1:修改/etc/hosts文件:添加下面主机192.168.225.131hadoop101192.168.225.132hadoop102192.168.225.133hadoop1032:编写xsync文件用普通用户hadoop在/home目录下创建bin文件—–用于存放脚本的地方编写脚本:#!/bin/bash#1获取输入参数个数,如果没有参数,直接退出pcount=$#if((pcount==0));thenechonoargs;exit;

    2022年5月7日
    71
  • oracle 存储过程打印语句,oracle 存储过程语句总结[通俗易懂]

    oracle 存储过程打印语句,oracle 存储过程语句总结[通俗易懂]1、ExitWhen循环:createorreplaceprocedureproc_test_exit_whenisinumber;begini:=0;LOOPExitWhen(i>5);Dbms_Output.put_line(i);i:=i+1;ENDLOOP;endproc_test_exit_when;createorreplaceprocedureproc_te…

    2022年7月17日
    16
  • github邮箱验证不了_为什么github注册不成功

    github邮箱验证不了_为什么github注册不成功要使用github必须先注册个github账号,注册之后会有一个邮箱验证的步骤需要做但是如果你使用126,163或者其它的一些免费邮箱,极有可能是收不到邮箱的,这个就麻烦了不过,qq邮箱目前是可以使用的,         不过也可能出现收不到的情况,那就换个qq邮箱再试,         如果还不行,换个时间段再试;   

    2022年9月12日
    4
  • connectionStrings 元素[通俗易懂]

    connectionStrings 元素[通俗易懂].NETFramework常规参考connectionStrings元素(ASP.NET设置架构)为ASP.NET应用程序和ASP.NET功能指定数据库连接字符串(名称/值对的形式)的集合。此元素是.NETFramework2.0版中的新元素。configuration元素(常规设置架构)connectionStrings元素…

    2022年5月22日
    39
  • python发明人为什么退出_64岁Python创始人突然不退休了,只想做一名微软的打工人,原来是这样的!…

    python发明人为什么退出_64岁Python创始人突然不退休了,只想做一名微软的打工人,原来是这样的!…随着人工智能的飞速发展,Python横扫各大编程语言榜单,成为最受欢迎的、使用最广泛的程序设计语言之一,作为Python的创建者,GuidovanRossum突然于去年10月宣布将要退休,退出Python核心决策层。而就在今天,他在Twitter上正式宣布,退休太无聊,已加入了微软开发者部门,将致力于“确保更好地使用Python(不仅限于Windows)。据了解,他与…

    2025年5月22日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号