sqlserver存储过程动态参数调用实现代码
2023-06-13 09:14:30 时间
只是做笔记,没什么!!
复制代码代码如下:
--创建测试表
CREATETABLE[dbo].[Student](
[ID][int]IDENTITY(1,1)NOTNULLPRIMARYKEY,
[Name][nvarchar](20)NOTNULLDEFAULT(""),
[Age][int]NOTNULLDEFAULT(0),
[Sex][bit]NOTNULLDEFAULT(0),
[Address][nvarchar](200)NOTNULLDEFAULT("")
)
--比如是一个查询存储过程
CreatePROCGetStudentByType
@typeint=0,--1根据id查询,2根据性别查询
@argsXML--参数都写到这里吧
AS
BEGIN
DECLARE@idINT,@sexBIT
SET@id=@args.value("(args/id)[1]","int")--参数都可以写在这里,如果没有传过来,大不了是null值了,反正也用不到,没关系的
SET@sex=@args.value("(args/sex)[1]","bit")
IF(@type=1)
BEGIN
SELECT*FROMdbo.StudentWHEREID=@id
END
IF(@type=2)
BEGIN
SELECT*FROMdbo.StudentWHERESex=@sex
END
END
参数写xml里感觉比用字符串要好很多,这样调用时参数就不好组织了,所以这里要有个帮助类XmlArgs
publicclassXmlArgs
{
privatestring_strArgs=string.Empty;
privatebool_isCreate=false;
privateDictionary<string,string>_args;
publicstringArgs
{
get
{
if(!_isCreate)
{
_strArgs=_CreateArgs();
_isCreate=true;
}
return_strArgs;
}
}
publicXmlArgs()
{
_args=newDictionary<string,string>();
}
publicvoidAdd(stringkey,objectvalue)
{
_args.Add(key,value.ToString());
_isCreate=false;
}
publicvoidRemove(stringkey)
{
_args.Remove(key);
_isCreate=false;
}
publicvoidClear()
{
_args.Clear();
_isCreate=false;
}
privatestring_CreateArgs()
{
if(_args.Count==0)
{
returnstring.Empty;
}
StringBuildersb=newStringBuilder();
foreach(stringkeyin_args.Keys)
{
sb.AppendFormat("<{0}>{1}</{0}>",key,_args[key]);
}
returnsb.ToString();
}
}
调用:
privatevoidBindData()
{
XmlArgsargs=newXmlArgs();
args.Add("id",1);
System.Data.DataTabledt=GetStudentByType(1,args);
GridView1.DataShow(dt);
}
privateSystem.Data.DataTableGetStudentByType(inttype,XmlArgsargs)
{
SqlHelperhelper=newSqlHelper();
helper.Params.Add("type",type);
helper.Params.Add("args",args.Args);
System.Data.DataTabledt=helper.RunDataTable("GetStudentByType");
returndt;
}
相关文章
- SqlServer快速检索某个字段在哪些存储过程中(sql 语句)
- SQL Server中表的分区设计(sqlserver表分区)
- 和密码理解SQLServer用户名和密码的重要性(sqlserver用户名)
- 群晖与SQLServer协同,打破传统数据存储极限(群晖 sqlserver)
- 利用浏览器访问SqlServer数据库(浏览器sqlserver)
- 小型SQL Server:实现数据存储的最佳选择(小型的sqlserver)
- 突破难题:如何快速打开SQLServer(如果快速打开sqlserver)
- 如何从零开始学习SQLServer(sqlserver零基础)
- SQLServer之表:存储数据最核心部分(sqlserver ?表)
- SQL Server自我连接技巧及其应用(sqlserver自连接)
- 支出SQLserver支出排行榜:第二位开销惊人(sqlserver第二高)
- 使用SQLServer实现短信发送功能(sqlserver短信)
- SQL Server实战演示:用实例解析使用方法(sqlserver演示)
- SQL Server游标执行效率低:如何优化?(sqlserver游标慢)
- 向数据分析SQLServer 探索横向纵向数据深层分析(sqlserver 横纵)
- 如何优化SQLServer的判断效率?(sqlserver或判断)
- 存储过程如何使用SQLServer编写专业的存储过程(sqlserver怎么写)
- SQLServer的存储之旅——照片存储技巧大全(sqlserver存照片)
- SQLServer因子:开拓新的应用领域(sqlserver 因子)
- SQLserver唆发器:解锁数据库性能的关键(sqlserver唆发器)
- 【用SQL Server尽情畅游数据世界】(sqlserver吾爱)
- 妙用SQLServer:提高运行速度的妙招(sqlserver变卡)
- 存储实现高性能:使用SqlServer双网卡存储(sqlServer双网卡)
- SQLServer添加主键约束的技巧(sqlserver加主键)
- SQL Server 副本:实现数据的安全存储(sqlserver副本)
- 利用SQLServer写出代码的技巧(sqlserver写代码)
- 使用SQLServer修改日期的正确方法(sqlserver修改日期)
- 编程使用Qt快速实现SQLServer数据库编程(qt中sqlserver)
- SQLServer图标:一键轻松访问数据库(sqlserver 图标)
- 追踪SqlServer数据表的足迹(追踪sqlserver表)
- 「华丽转身:迎接SQLServer的安装之旅」(装sqlserver)
- SQLServer分页查询存储过程代码
- sqlserver千万数量级分页存储过程代码