iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL存储过程中In参数的传递方式
  • 544
分享到

SQL存储过程中In参数的传递方式

2024-04-02 19:04:59 544人浏览 安东尼
摘要

本篇内容介绍了“sql存储过程中In参数的传递方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.SQL

本篇内容介绍了“sql存储过程中In参数的传递方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.SQL递归

SQL Server中,我们可以利用表表达式来实现递归算法,一般用于阻止机构的加载及相关性处理。

-->实现:

假设OrganiseUnit(组织机构表)中主要的三个字段为OrganiseUnitID(组织机构主键ID)、ParentOrganiseUnitID(组织机构父ID)、OrganiseName(组织机构名称)复制代码 代码如下: with organise as(select * from OrganiseUnit where OrganiseUnit.OrganiseUnitID = @OrganiseUnitID uNIOn all select OrganiseUnit.* from organise, OrganiseUnit where organise.OrganiseUnitID = OrganiseUnit.ParentOrganiseUnitID)

select OrganiseName from organise

上述sql语句实现了, 传入组织机构主键ID,查询出其对应组织机构名称和其 全部下级组织机构名称。

2.存储过程中 In 参数传递

-->情景

① 通过刚才的SQL递归方式,我们已经可以将一个组织机构和其全部下级单位查询出来;假设每个组织机构还有一个字段为OrganiseCode(组织机构代码);

② 当我们需要按照组织机构代码进行筛选数据时,我们会用到 In 这个查询条件,例如select * from OrganiseUnit where OrganiseCode in ('10000001','10000003','10000002')

③但是in()中条件不可能总是固定不变的,有时我们需要用参数传递进去;我们可能会想到设定一个变量参数@OrganiseCode,然后按照'10000001','10000003','10000002'的格式拼参数不就行了吗 ?

④in使用参数时会强制转换参数类型与条件字段一致,不支持构造字符串(如果字段本身为varchar、char型,则in相当于只有一个条件值,而不是一组)

-->实现

①可以使用exec,把整个sql当做参数来执行,例如:exec ('select * from OrganiseUnit where OrganiseCode in ('+@OrganiseCode+')');这样存储过程修改复杂,没有防注功能。

②我们采用另一种方案来解决,先写一个SQL函数,功能是分割字符串复制代码 代码如下: create function SplitIn(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin  while(charindex(@split,@c)<>0)  begin  insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))  set @c = stuff(@c,1,charindex(@split,@c),'')  end  insert @t(col) values (@c)  return end

我们为这个函数传入字符串和分隔符,他就能将字符串按指定符号分割并作为查询结果返回。

例如:执行select col from SplitIn('10000001,10000002,10000003',',')

返回:

10000001

10000002

10000003

③有了这个函数,我们就有了新的解决方案了

定义参数@OrganiseCode,为其传入字符串,这个参数由一个或多个OrganiseCode构成,中间用“,”分割;

调用方式:select * from OrganiseUnit where OrganiseCode in (select col from SplitIn(@OrganiseCode,','))

“SQL存储过程中In参数的传递方式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: SQL存储过程中In参数的传递方式

本文链接: https://www.lsjlt.com/news/60336.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL存储过程中In参数的传递方式
    本篇内容介绍了“SQL存储过程中In参数的传递方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.SQL...
    99+
    2024-04-02
  • SQL实现递归及存储过程中In()参数传递解决方案详解
    1.SQL递归 在SQL Server中,我们可以利用表表达式来实现递归算法,一般用于阻止机构的加载及相关性处理。 -->实现: 假设OrganiseUnit(组织机构表)中主...
    99+
    2022-11-15
    存储过程 In 参数传递
  • Spring Data JPA中 in 条件参数的传递方式
    关于Spring Data JPA中自定义sql 条件的 in参数记录 此文做一个记录,以便以后观看,也希望正在遇到同样问题的同学能有所启发,如果你有更好的方法,或我的做法有问题,请...
    99+
    2024-04-02
  • MySQL存储过程in、out、inout参数的案例
    小编给大家分享一下MySQL存储过程in、out、inout参数的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!文章目录存储...
    99+
    2024-04-02
  • C#调用SQL Server中有参数的存储过程
    一、使用SqlParameter的方式 代码: using System; using System.Collections.Generic; using System.Compon...
    99+
    2024-04-02
  • mybatis3中@SelectProvider传递参数方式
    mybatis3 @SelectProvider传递参数 一、通常情况下我喜欢使用实体或者vo去传参数 这样在Provide的方法中可以直接通过#{param}(param...
    99+
    2024-04-02
  • Vue中mapMutations传递参数方式
    目录通过子组件定义的方法传递参数在…mapMutations引用当然也可以写直接传递关于mapMutations的作用通过子组件定义的方法传递参数 在…m...
    99+
    2024-04-02
  • Spring Data JPA中in条件参数的传递方式有哪些
    这篇文章主要介绍Spring Data JPA中in条件参数的传递方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!关于Spring Data JPA中自定义sql 条件的 in参数记录此文做一个记录,以便以后...
    99+
    2023-06-15
  • C#中参数的传递方式详解
    值类型参数按值传递 class Program { static void Main(string[] args) { ...
    99+
    2022-11-13
    C# 传递参数
  • C++ 函数参数的传递方式
    c++++ 函数参数传递有三种方式:按值传递副本,按引用传递引用,按指针传递指针。按值传递不影响实际参数,按引用和指针传递则会影响。 C++ 函数参数的传递方式 在 C++ 中,函数参...
    99+
    2024-04-13
    函数参数 引用传递 值传递 c++
  • golang函数参数的传递方式
    go 函数参数传递方式有三种:按值、按引用、按指针。默认按值传递,按引用传递需使用指针类型,按指针传递直接传递指针。在需要修改外部变量或高效共享数据时,分别选用按引用或按指针传递方式。 ...
    99+
    2024-04-22
    golang 函数参数传递方式
  • SpringCloud通过Feign传递List类型参数方式
    目录通过Feign传递List类型参数1、单个List实体传递2、基本类型传递3、实体类型传递Feign在参数为List时的坑错误写法正确写法通过Feign传递List类型参数 首先...
    99+
    2024-04-02
  • 如何创建带有 IN 参数的 MySQL 存储过程?
    为了让它理解,我们使用名为“student_info”的表,它具有以下值 -mysql> Select * from student_info; +-----+---------+------------+---------...
    99+
    2023-10-22
  • MySql动态sql语句带参数的存储过程
    这篇文章主要介绍“MySql动态sql语句带参数的存储过程”,在日常操作中,相信很多人在MySql动态sql语句带参数的存储过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • React传递参数的几种方式
    目录父子组件之间传递参数路由传参 状态提升context引入redux父子组件之间传递参数 父组件往子组件传值,直接用this.props就可以实现 在父组件中,给需要传递...
    99+
    2024-04-02
  • Sql Server存储过程中如何调用存储过程接收输出参数返回值
    这篇文章将为大家详细讲解有关Sql Server存储过程中如何调用存储过程接收输出参数返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建存储过程:AL...
    99+
    2024-04-02
  • mysql存储过程怎么传字符串参数
    mysql存储过程传字符串参数的示例:存储过程:create procedure Pro_GetUserInfo(in szEmpName varchar(1000))-> ...
    99+
    2024-04-02
  • java线程传递参数的方式有哪些
    在Java中,线程传递参数的方式有以下几种: 使用构造函数传递参数:可以在创建线程对象时,通过构造函数将参数传递给线程对象。通过...
    99+
    2023-10-27
    java
  • C++ 函数参数的传递方式详解:值传递和引用传递
    c++++ 参数传递方式分为值传递和引用传递。值传递创建函数参数副本,不影响原变量;引用传递直接操作原变量。选择方式取决于需求:保护原变量使用值传递,修改原变量或提高效率使用引用传递。 ...
    99+
    2024-04-12
    c++ 函数参数传递
  • Go语言中的参数传递方式探究
    在 go 语言中,函数参数的传递方式主要有两种:值传递:传递变量的副本,不会影响调用代码中的原始变量。指针传递:传递变量的地址,允许函数直接修改调用代码中的原始变量。 Go 语言中的参...
    99+
    2024-04-03
    go 参数传递 go语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作