使用場景文章來源:http://www.zghlxwxcb.cn/news/detail-687602.html
一個計算價格的函數(shù),多個存儲過程調(diào)用,因業(yè)務需求經(jīng)常要新增參數(shù),避免修改函數(shù)時程序執(zhí)行存儲過程報錯,將多個參數(shù)拼接為一個字符串傳遞文章來源地址http://www.zghlxwxcb.cn/news/detail-687602.html
-- 調(diào)用函數(shù)
CalcuPrice(UnitPrice,CONCAT('MFQZC=',MFQZC,'&ItemNum=',ItemNum,
'&AssmCode=',AssmCode))
-- 定義函數(shù)
function [CalcuPrice](
@UnitPrice decimal(38, 3), -- 單價
@ARGS varchar(900)
)
returns decimal(38, 3)
as begin
/****************************************
* 解析參數(shù)列
****************************************/
-- 1、定義接受參數(shù)列表的變量
declare @MFQZC varchar(100),
@ItemNum varchar(100)/*物料編碼*/,
@AssmCode varchar(100)/*加工件編碼*/
declare @Str0 varchar(100),
@Str1 varchar(100),
@Str2 varchar(100)
-- 2、循環(huán)讀取鍵值對
declare S_subject CURSOR FAST_FORWARD FOR
select data from dbo.SplitStr(@ARGS,'&');
open S_subject;
fetch next from S_subject into @Str0;
while @@FETCH_STATUS=0
begin
set @Str1= (select data from (select ROW_NUMBER() over (ORDER BY (select 1)) RowNum,data from dbo.SplitStr(@Str0, '=')) a where RowNum=1)
set @Str2= (select data from (select ROW_NUMBER() over (ORDER BY (select 1)) RowNum,data from dbo.SplitStr(@Str0, '=')) a where RowNum=2)
if(@Str1='MFQZC')
begin
set @MFQZC=@Str2
end
else if(@Str1='ItemNum')
begin
set @ItemNum=@Str2
end
else if(@Str1='AssmCode')
begin
set @AssmCode=@Str2
end
fetch next from S_subject into @Str0;
end
close S_subject;
deallocate S_subject;
end;
-- 接下來就可以用從字符串中解析出來的參數(shù)進行后續(xù)邏輯處理
到了這里,關于Sql 函數(shù)傳遞參數(shù) 字符串拼接的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!