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

金沙国际官网 1

在系统中平日会遇见向数据库中批量插入数据情形,存款和储蓄进程中绝非数组,唯有经过字符串分割循环插入,上面是贰个本人探究的二个例证:

一种艺术:

 
金沙国际官网,摘要:
下文呈报使用round
sql函数,对数值型数据开展舍入操作

实行情况:sqlserver 二〇〇八

摘要:

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

create proc deletesomerecs (@ids varchar(8000))

转自:

下文陈说选择sql脚本批量去除全体存款和储蓄进程的不二等秘书技,如下所示:
试验情状:sqlserver
二〇〇八 奥迪Q52

mssql_DB_仓库储存进程类型简要介绍

 那一个事例是插入一条主单音讯和相应的多条子音信,下边是两张表

as



 

--主表
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
    );

exec(‘delete from inmodify where inmid in (‘+@ids+’)’)

近年收受客商供给,需对数值型数据,无论前边数据多少,直接开展舍入操作,大费周章,终于意识了round函数能够知足此操作。

round函数舍入个性介绍:
round语法介绍:

通常使用sql脚本,删除存款和储蓄进度,大家只可以够选取删除命令一条一条的删减存款和储蓄进度,下文介绍一种便民方法,能够对系统中保有的储存进程实行删除,
<span style=”color:red;”>
贯彻思路:
1 接纳一时表将储存过程名称缓存
2 通过巡回有的时候表,输出删除存款和储蓄进度脚本
3 施行脚本

MSSQL
sql存储进程创制简单介绍及应用比方

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

另一种方法:

round(数好玩的事明式,长度[,操作格局])

参数表达:
数据书上表明式:
选择二个tinyint、int、bigint、decimal、numeric、money、smallmoney、float、real
长度:
此参数须为tinyint int smallint类型
round函数舍入的精度
操作办法:
此参数须为tinyint int smallint类型

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 二零零六 CLLX570存款和储蓄进程创立比方

上边是函数的创办

create proc deletesomerecs (@ids varchar(8000))

缺省值:为0,假设输入任何值,则将截断“数听他们证明式”

重临值说明:
tinyint返回int
int 返回int
bigint 返回bigint
decimal numberic 返回decimal numberic
money smallmoney返回money

 

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

as

float real 返回float

<span style=”color:red;”>
注意事项:
当”长度”为正数时,则将小数点后舍入的位数
当”长度”为负数时,则将小数点前舍入的位数
</span>
 —————————————————–
round应用譬喻:

SELECT ROUND(8989.3652, 2), --小数位后保留2位,四舍五入
ROUND(8989.3652, -2),--小数位前舍入2位,四舍五入
---小数位全部舍入,四舍五入
ROUND(8956.34, 0),ROUND(8956.65, 0),ROUND(8956.25, 0), 
---截断数据舍入位置后的数据
ROUND(16081.83,0,-2), ROUND(16081.83,0,1), ROUND(16081.83,0,5),
ROUND(16081.835,2,8), ROUND(16081.836,-2,6), ROUND(16081.83,-2,7)
go

---例:sql取消四舍五入方法分享
---丢失小数位后两位,并不进行四舍五入操作
select round(8989.999,2,9)

 

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

 那一个函数在那之中又用到了另贰个函数dbo.F_GL450tnSomeCharIdxInStrByNo,用于重返有个别字符在四个字符串的岗位,下边是该函数的概念:

delete from inmodify where charindex(‘,’+ltrim(inmid)+’,’,
‘,’+@ids+’,’)>0

MSSQL
sql存款和储蓄进度和CLEvoque存款和储蓄进度分别

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数据分页

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图