博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL SERVER IN参数化处理
阅读量:6274 次
发布时间:2019-06-22

本文共 2160 字,大约阅读时间需要 7 分钟。

方法一、

CREATE TABLE [dbo].[Users]    (      Id INTEGER IDENTITY(1, 1)                 PRIMARY KEY ,      Name NVARCHAR(50) NOT NULL    ) ;GO

//循环插值

DECLARE @Counter INTEGERSET @Counter = 1WHILE ( @Counter <= 100 )     BEGIN        INSERT  Users                ( Name                )        VALUES  ( 'Test Users #' + CAST(@Counter AS VARCHAR(10))                )        SET @Counter = @Counter + 1    END

 

--拆分函数CREATE FUNCTION dbo.fnSplit    (  @List      varchar(8000),       @Delimiter varchar(5)   )    RETURNS @TableOfValues table       (  RowID   smallint IDENTITY(1,1),          [Value] varchar(50)       ) AS    BEGIN          DECLARE @LenString int        WHILE len( @List ) > 0          BEGIN                      SELECT @LenString =                (CASE charindex( @Delimiter, @List )                    WHEN 0 THEN len( @List )                    ELSE ( charindex( @Delimiter, @List ) -1 )                END               )                                             INSERT INTO @TableOfValues                SELECT substring( @List, 1, @LenString )                            SELECT @List =                (CASE ( len( @List ) - @LenString )                    WHEN 0 THEN ''                    ELSE right( @List, len( @List ) - @LenString - 1 )                 END               )          END                RETURN          END

//存储过程

CREATE PROCEDURE [dbo].[spUsers]    @UsersIDs VARCHAR(8000)AS     BEGIN        SELECT  u.Id ,                u.Name        FROM    [dbo].[Users] u                JOIN dbo.fnSplit(@UsersIDs, ',') t ON u.Id = t.value    ENDGO

//执行

EXECUTE [dbo].[spUsers] '1,2,3,4'

方法二、

CREATE TYPE UsersIDTableType AS TABLE (ID INTEGER PRIMARY KEY);GO

//存储过程

CREATE PROCEDURE [dbo].[spGetUsersTable]    @UsersIDs UsersIDTableType READONLYAS     BEGIN        SELECT  c.ID ,                c.Name        FROM    [dbo].[Users] c                JOIN @UsersIDs t ON c.Id = t.ID    ENDGO

//调用

DECLARE @Ids UsersIDTableTypeINSERT  @IdsVALUES  ( 5 )INSERT  @IdsVALUES  ( 6 )INSERT  @IdsVALUES  ( 7 )EXECUTE [dbo].[spGetUsersTable] @Ids

//在.NET下如何调用?

调用也比较简单,将参数类型限制为

SqlDbType.Structured

那么值可是是任意IEnumerable, DataTable, 或者DbDataReader。

转载地址:http://kcgpa.baihongyu.com/

你可能感兴趣的文章
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
《计算广告:互联网商业变现的市场与技术》一第一部分 在线广告市场与背景...
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
《Arduino家居安全系统构建实战》——1.5 介绍用于机器学习的F
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>
spring boot集成mongodb最简单版
查看>>
DELL EqualLogic PS存储数据恢复全过程整理
查看>>
《Node.js入门经典》一2.3 安装模块
查看>>
《Java 开发从入门到精通》—— 2.5 技术解惑
查看>>
Linux 性能诊断 perf使用指南
查看>>
实操分享:看看小白我如何第一次搭建阿里云windows服务器(Tomcat+Mysql)
查看>>
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>
机智云开源框架初始化顺序
查看>>
Spark修炼之道(进阶篇)——Spark入门到精通:第五节 Spark编程模型(二)
查看>>
一线架构师实践指南:云时代下双活零切换的七大关键点
查看>>