• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > sqlserver 存储过程动态参数调用实现代码

sqlserver 存储过程动态参数调用实现代码

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了存储过程,动态参数等相关知识,希望本文的分享对您有所帮助

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 @id=@args.value('(args/id)[1]','int') --参数都可以写在这里,如果没有传过来,大不了是null值了,反正也用不到,没关系的
SET @sex =@args.value('(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 _args;
public string Args
{
get
{
if (!_isCreate)
{
_strArgs = _CreateArgs();
_isCreate = true;
}
return _strArgs;
}
}
public XmlArgs()
{
_args = new Dictionary();
}
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}", 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;
}
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • mysql 精简过程(删除一些文件)
  • mysql存储过程 在动态SQL内获取返回值的方法详解
  • 深入mysql存储过程中表名使用参数传入的详解
  • 基于mysql多实例安装的深入解析
  • 深入mysql创建自定义函数与存储过程的详解
  • 基于Php mysql存储过程的详解
  • Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve)
  • 一次非法关机导致mysql数据表损坏的实例解决
  • Mysql的游标的定义使用及关闭深入分析
  • mysql存储过程 游标 循环使用介绍

相关文章

  • 2017-05-11mysql命令行还原phpMyAdmin导出的含有中文的SQL文件
  • 2017-05-11Ubuntu配置Mysql主从数据库
  • 2018-12-05sql语句返回主键SCOPE_IDENTITY()
  • 2017-05-11使MySQL查询区分大小写的实现方法
  • 2018-12-05MySQL高级十四——表的优化
  • 2018-12-05sql查询某字段的相同值
  • 2018-12-05关于SQL Server 的全文搜索功能详解
  • 2017-05-11MySQL下的RAND()优化案例分析
  • 2017-05-11MySQL的23个需要注意的地方
  • 2017-05-11MYSQL 随机 抽取实现方法及效率分析

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL索引操作命令小结
    • SQL临时表递归查询子信息并返回记录的代码
    • mysql锁表和解锁语句分享
    • SqlServer 基础知识 数据检索、查询排序语句
    • mysql 添加索引 mysql 如何创建索引
    • Mysql查询缓存碎片、缓存命中率及Nagios监控
    • MySQL中的if和case语句的使用
    • SQLSERVER2005 中树形数据的递归查询
    • sqlserver 查询数据库大小的方法
    • Mysql数据库使用concat函数执行SQL注入查询

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有