婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL實現遞歸及存儲過程中In()參數傳遞解決方案詳解

SQL實現遞歸及存儲過程中In()參數傳遞解決方案詳解

熱門標簽:云南全自動外呼系統公司 競圣地圖標注服務 貴州外呼回撥系統是什么 外呼系統的話術 安陽天音防封電銷卡 陽光創信ai外呼獲客系統助力 智能外呼系統需要多少錢 智能語音車載電話機器人 衛星地圖標注距離

1.SQL遞歸

在SQL Server中,我們可以利用表表達式來實現遞歸算法,一般用于阻止機構的加載及相關性處理。

-->實現:

假設OrganiseUnit(組織機構表)中主要的三個字段為OrganiseUnitID(組織機構主鍵ID)、ParentOrganiseUnitID(組織機構父ID)、OrganiseName(組織機構名稱)

復制代碼 代碼如下:

with organise as
(select * from OrganiseUnit where OrganiseUnit.OrganiseUnitID = @OrganiseUnitID
union all select OrganiseUnit.* from organise, OrganiseUnit
where organise.OrganiseUnitID = OrganiseUnit.ParentOrganiseUnitID)

select OrganiseName from organise


上述sql語句實現了, 傳入組織機構主鍵ID,查詢出其對應組織機構名稱和其 全部下級組織機構名稱。

2.存儲過程中 In 參數傳遞

-->情景

① 通過剛才的SQL遞歸方式,我們已經可以將一個組織機構和其全部下級單位查詢出來;假設每個組織機構還有一個字段為OrganiseCode(組織機構代碼);

② 當我們需要按照組織機構代碼進行篩選數據時,我們會用到 In 這個查詢條件,例如select * from OrganiseUnit where OrganiseCode in ('10000001','10000003','10000002')

③但是in()中條件不可能總是固定不變的,有時我們需要用參數傳遞進去;我們可能會想到設定一個變量參數@OrganiseCode,然后按照'10000001','10000003','10000002'的格式拼參數不就行了嗎 ?

④in使用參數時會強制轉換參數類型與條件字段一致,不支持構造字符串(如果字段本身為varchar、char型,則in相當于只有一個條件值,而不是一組)

-->實現

①可以使用exec,把整個sql當做參數來執行,例如:exec ('select * from OrganiseUnit where OrganiseCode in ('+@OrganiseCode+')');這樣存儲過程修改復雜,沒有防注功能。

②我們采用另一種方案來解決,先寫一個SQL函數,功能是分割字符串

復制代碼 代碼如下:

create  function  SplitIn(@c   varchar(2000),@split   varchar(2))  
returns   @t   table(col   varchar(20))  
as  
begin   
  while(charindex(@split,@c)>0)  
    begin  
      insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1))  
      set   @c   =   stuff(@c,1,charindex(@split,@c),'')  
    end  
  insert   @t(col)   values   (@c)  
  return  
end 

我們為這個函數傳入字符串和分隔符,他就能將字符串按指定符號分割并作為查詢結果返回。

例如:執行select col from SplitIn('10000001,10000002,10000003',',')

返回:

10000001

10000002

10000003

③有了這個函數,我們就有了新的解決方案了

定義參數@OrganiseCode,為其傳入字符串,這個參數由一個或多個OrganiseCode構成,中間用“,”分割;

調用方式:select * from OrganiseUnit where OrganiseCode in (select col from SplitIn(@OrganiseCode,','))

標簽:周口 預約服務 河源 營口 寧夏 湘潭 鄂爾多斯 欽州

巨人網絡通訊聲明:本文標題《SQL實現遞歸及存儲過程中In()參數傳遞解決方案詳解》,本文關鍵詞  SQL,實現,遞歸,及,存儲,過程中,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL實現遞歸及存儲過程中In()參數傳遞解決方案詳解》相關的同類信息!
  • 本頁收集關于SQL實現遞歸及存儲過程中In()參數傳遞解決方案詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 襄垣县| 龙游县| 松江区| 澄迈县| 阳山县| 兴业县| 仪征市| 巫溪县| 长宁区| 板桥市| 南丰县| 东宁县| 古蔺县| 二手房| 隆安县| 老河口市| 合山市| 平塘县| 阿图什市| 社旗县| 蓝田县| 吉林省| 惠水县| 读书| 固镇县| 新密市| 肥乡县| 连城县| 龙里县| 保山市| 历史| 黄龙县| 阿勒泰市| 甘德县| 徐水县| 河间市| 河池市| 镇巴县| 葫芦岛市| 龙泉市| 葫芦岛市|