create function [dbo].[get_strarraylength]
(@str varchar(1024), --要分割的字串
@split varchar(10) --分隔符號
)returns int
asbegin
declare @location int
declare @start int
declare @length int
set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while @location<>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
endreturn @length
end
create function [dbo].[get_strarraystrofindex]
(@str varchar(1024), --要分割的字串
@split varchar(10), --分隔符號
@index int --取第幾個元素
)returns varchar(1024)
asbegin
declare @location int
declare @start int
declare @next int
declare @seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while @location<>0 and @index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
endif @location =0 select @location =len(@str)+1
--這兒存在兩種情況:1、字串不存在分隔符號 2、字串中存在分隔符號,跳出while迴圈後,@location為0,那預設為字串後邊有乙個分隔符號。
return substring(@str,@start,@location-@start)
end以下新增了事務處理判斷;
create procedure [dbo].[insertorder]
@viporderids varchar(8000),--傳入字串 如 order10001,order10002,order10003
@errorcode varchar(10) out,
@errormsg varchar(100) out
asbegin
declare @errornum int;
declare @next int ;
decare @viporderid varchar(20);
set @errornum=0
set @next=1
begin transaction
while @next<=dbo.get_strarraylength(@viporderids,',')
begin
set @viporderid=dbo.get_strarraystrofindex(@viporderids,',',@next)
print @viporderid
if @reterror='000'
begin
print('寫入成功!')
end
else
begin
print('訂單已存在!')
set @errornum=@errornum+1
end
set @next=@next+1
endif @errornum=0
begin
print('插入主表')
commit transaction --提交事務
endelse
begin
print('事務回滾!')
rollback transaction --事務回滾
end
print @errormsg
end
用儲存過程實現for迴圈執行sql語句
預設情況下,delimiter是分號 在mysql中每行命令都是用 結尾,回車後自動執行,在儲存過程中 往往不代表指令結束,馬上執行,而delimiter原本就是 的意思,因此用這個命令轉換一下 為 這樣只有收到 才認為指令結束可以執行 delimiter 建立新的函式 create procedu...
在SQL中實現陣列
t sql象陣列一樣處理字串 分割字串 在日常的程式設計過程中,陣列是要經常使用到的。在利用sql對資料庫進行操作時,有時就想在sql使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在t sql中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式get strarraylength 取得...
在SQL中實現陣列功能
t sql象陣列一樣處理字串 分割字串 在日常的程式設計過程中,陣列是要經常使用到的。在利用sql對資料庫進行操作時,有時就想在sql使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在t sql中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式get strarraylength 取得...