一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - sqlserver 存儲過程動態參數調用實現代碼

sqlserver 存儲過程動態參數調用實現代碼

2019-12-09 15:11MSSQL教程網 Sql Server

sqlserver 存儲過程動態參數調用實現代碼,需要的朋友可以參考下。

只是做筆記,沒什么!! 

復制代碼代碼如下:


--創建測試表 
CREATE TABLE [dbo].[Student]( 
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY, 
[Name] [nvarchar](20) NOT NULL DEFAULT (''), 
[Age] [int] NOT NULL DEFAULT (0), 
[Sex] [bit] NOT NULL DEFAULT (0), 
[Address] [nvarchar](200) NOT NULL DEFAULT ('') 

--比如是一個查詢存儲過程 
Create PROC GetStudentByType 
@type int =0, -- 1根據id查詢, 2根據性別查詢 
@args XML -- 參數都寫到這里吧 
AS 
BEGIN 
DECLARE @id INT,@sex BIT 
SET @[email protected]('(args/id)[1]','int') --參數都可以寫在這里,如果沒有傳過來,大不了是null值了,反正也用不到,沒關系的 
SET @sex [email protected]('(args/sex)[1]','bit') 
IF(@type=1) 
BEGIN 
SELECT * FROM dbo.Student WHERE ID=@id 
END 
IF(@type=2) 
BEGIN 
SELECT * FROM dbo.Student WHERE Sex=@sex 
END 
END 


參數寫xml里感覺比用字符串要好很多,這樣調用時參數就不好組織了,所以這里要有個幫助類XmlArgs 

復制代碼代碼如下:


public class XmlArgs 

private string _strArgs = string.Empty; 
private bool _isCreate = false; 
private Dictionary<string, string> _args; 
public string Args 

get 

if (!_isCreate) 

_strArgs = _CreateArgs(); 
_isCreate = true; 

return _strArgs; 


public XmlArgs() 

_args = new Dictionary<string, string>(); 

public void Add(string key, object value) 

_args.Add(key, value.ToString()); 
_isCreate = false; 

public void Remove(string key) 

_args.Remove(key); 
_isCreate = false; 

public void Clear() 

_args.Clear(); 
_isCreate = false; 

private string _CreateArgs() 

if (_args.Count == 0) 

return string.Empty; 

StringBuilder sb = new StringBuilder(); 
foreach (string key in _args.Keys) 

sb.AppendFormat("<{0}>{1}</{0}>", key, _args[key]); 

return sb.ToString(); 


調用: 

復制代碼代碼如下:


private void BindData() 

XmlArgs args = new XmlArgs(); 
args.Add("id", 1); 
System.Data.DataTable dt = GetStudentByType(1, args); 
GridView1.DataShow(dt); 

private System.Data.DataTable GetStudentByType(int type, XmlArgs args) 

SqlHelper helper = new SqlHelper(); 
helper.Params.Add("type", type); 
helper.Params.Add("args", args.Args); 
System.Data.DataTable dt = helper.RunDataTable("GetStudentByType"); 
return dt; 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费片在线观看 | 1769国产精品免费视频 | 精品国产中文字幕在线视频 | 9久热这里只有精品免费 | 52av我爱avhaose01好 | 三级伦理影院 | 小泽玛丽av无码观看 | 日本天堂视频 | 91亚洲视频在线观看 | 久久亚洲一级α片 | 色亚州| 女人肮脏的交易中文字幕未删减版 | 好硬好大好浪夹得好紧h | 亚洲AV无码国产精品色午夜情 | 亚洲国产货青视觉盛宴 | 好男人资源免费播放 | 久久囯产精品777蜜桃传媒 | 国产裸舞在线一区二区 | 日韩毛片基地一区二区三区 | 天天爱天天做天天爽天天躁 | 亚飞与亚基国语1080p在线观看 | 国产精品亚洲午夜一区二区三区 | 国产资源在线视频 | 免费看成人毛片日本久久 | 性做久久久久久久久浪潮 | 亚洲aⅴ男人的天堂在线观看 | 日岳母小说 | 青青在线视频免费 | 大胸美女被c | 99热人人 | 香蕉久久高清国产精品免费 | 第一国内永久免费福利视频 | 无码精品AV久久久奶水 | 国产欧美日韩专区毛茸茸 | 好男人天堂网 | 女生被草| 狠狠干快播| 色综合久久六月婷婷中文字幕 | 日韩欧美中文字幕一区二区三区 | 国产主播99 | 国产欧美日韩在线播放 |