>

sqlserver存款和储蓄进度专项论题,批量去除全体

- 编辑:澳门新葡亰平台游戏 -

sqlserver存款和储蓄进度专项论题,批量去除全体

转自:http://www.maomao365.com/?p=6864

图片 1

在系统中临时会越过向数据库中批量插入数据情形,存储进程中从未数组,只有经过字符串分割循环插入,上面是二个本人商讨的三个事例:

摘要:

MSSQL存款和储蓄进程简要介绍及创制方式

create proc [dbo].[Proc_TestBatchMainDetailIns]
@mainName nvarchar(50),@detailNameStr nvarchar(max),@detailAgeStr nvarchar(max),
@detailRowCount int=1,@tmpFlag int=1,@newMainId int=0
as 
begin
insert into TestProBatch_Main(MainName) values(@mainName) select @newMainId=@@IDENTITY
set @detailRowCount=len(@detailNameStr)-len(replace(@detailNameStr,'|',''))+1
set @detailNameStr=@detailNameStr+'|'
set @detailAgeStr=@detailAgeStr+'|'
while(@tmpFlag<=@detailRowCount)
begin
insert into TestProcBatch_Detail(MainId,DetailName,DetailAge) values(@newMainId,dbo.F_RtnStrBySplitIndex(@detailNameStr,@tmpFlag),dbo.F_RtnStrBySplitIndex(@detailAgeStr,@tmpFlag))
set @tmpFlag=@tmpFlag+1
end
end

下文呈报选择sql脚本批量删减全数存款和储蓄进度的格局,如下所示:
实验景况:sqlserver 2010 宝马X32

mssql_DB_存款和储蓄进程类型简要介绍

 那么些事例是插入一条主单新闻和对应的多条子消息,上边是两张表


 

--主表
CREATE TABLE [dbo].[TestProBatch_Main](
    [ID] [int] IDENTITY(1,1) NOT NULL primary key,
    [MainName] [nvarchar](50) NOT NULL,
    [CreateTime] [datetime] NOT NULL
    );

--子表
CREATE TABLE [dbo].[TestProcBatch_Detail](
    [ID] [int] IDENTITY(1,1) NOT NULL primary key,
    [MainId] [int] NOT NULL,
    [DetailName] [nvarchar](50) NOT NULL,
    [DetailAge] [int] NOT NULL,
    [CreateTime] [datetime] NOT NULL
    );

日常使用sql脚本,删除存储进程,我们只好够使用删除命令一条一条的删减存储进度,下文介绍一种方便人民群众方法,可以对系统中享有的仓库储存进程进展删减,
<span style="color:red;">
兑现思路:
1 选选择配不时表将积攒进程名称缓存
2 通过巡回不经常表,输出删除存款和储蓄进度脚本
3 推行脚本

MSSQL sql存款和储蓄进度创立简要介绍及使用譬喻

 dbo.F_库罗德tnStrBySplitIndex是自定义的标量值函数,用于重临第多少个分割符对应的字符串,如dbo.F_RtnStrBySplitIndex('jack|lilei|tom|nike',3) 则返回tom

declare @t table(keyId int identity(1,1),tableName varchar(256))
----生成临时表
insert into @t(tableName) 
select [name] from sysobjects where type='P'

declare @i int @iMax int ,@info varchar(256)
set @i =1 
select @imax=max(keyId) from @t as t

while @i <@imax
begin
select @info = t.tableName from @t as t where t.keyId =@i

if @info is not null 
begin
exec ('drop proc '+@info) ---遍历删除存储过程
end 

set @i = @i+1 
set @info =null 
end

MSSQL SQl server 2009 CL兰德凯雷德存款和储蓄进度创造比如

上面是函数的创造

 

MSSQL 存款和储蓄进度三种加密方法简单介绍

create function [dbo].[F_RtnStrBySplitIndex](@procStr nvarchar(max),@splitStrIdx int)
returns nvarchar(250)
as
begin
declare @rtnStr nvarchar(250)
declare @currentSplitIdx int
declare @preSplitIdx int
set @currentSplitIdx=dbo.F_RtnSomeCharIdxInStrByNo('|',@procStr,@splitStrIdx)
set @preSplitIdx=dbo.F_RtnSomeCharIdxInStrByNo('|',@procStr,@splitStrIdx-1)
set @rtnStr=SUBSTRING(@procStr,@preSplitIdx+1,@currentSplitIdx-@preSplitIdx-1)
return @rtnStr
end

MSSQL 嵌套存款和储蓄进程简要介绍

 这个函数其中又用到了另四个函数dbo.F_CR-VtnSomeCharIdxInStrByNo,用于重返有个别字符在一个字符串的地方,上面是该函数的概念:

MSSQL sql存款和储蓄进度和CL奇骏存款和储蓄进程分别

ALTER function [dbo].[F_RtnSomeCharIdxInStrByNo](@findSplitStr varchar(250), @procStr varchar(8000), @n smallint)
    returns int
as
begin
    if @n < 1 return (0)
    declare @start smallint, @count smallint, @index smallint, @len smallint
    set @index = charindex(@findSplitStr, @procStr)
    if @index = 0 return (0)
    else select @count = 1, @len = len(@findSplitStr)
    while @index > 0 and @count < @n
        begin
            set @start = @index + @len
            select @index = charindex(@findSplitStr, @procStr, @start), @count = @count + 1
        end
    if @count < @n set @index = 0
    return (@index)
end

MSSQL存储进程参数应用措施

 调用存款和储蓄进程:exec  Proc_TestBatchMainDetailIns 'mainName1','jack|lilei|tom|nike','20|18|22|17'

mssql 存款和储蓄进度中 输入 输出参数应用实例

上边是打响插入后查询到的结果:

MSSQL 存款和储蓄进度中 return 再次来到值

图片 2

MSSQL 存款和储蓄进程中 表值参数用法

 

SQL新游戏的方法-成立数据类型 sql创制表值类型的方式

MSSQL存款和储蓄进程分页专项论题

mssql 数据库下分页方法总括

MSSQL 存款和储蓄进程分页优化-实验篇(一),分页成效进步十倍

MSSQL分页取数的艺术

MSSQL数据分页

本文由数据库发布,转载请注明来源:sqlserver存款和储蓄进度专项论题,批量去除全体