//创建一个静态方法 
public static DataSet fnInsertSingleUser(DataTable v_dt, params string[] param)
{
try
{
SqlConnection cn = new SqlConnection(connectionString);//connertionString链接数据库字符串
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = @"" + param[0];
SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
          //参数可以随意增加
SqlParameter pCode = cmd.Parameters.AddWithValue("@pCode", param[1]);
SqlParameter gsdm = cmd.Parameters.AddWithValue("@gsdm", param[2]);
SqlParameter khdm = cmd.Parameters.AddWithValue("@khdm", param[3]);
SqlParameter qy = cmd.Parameters.AddWithValue("@qy", param[4]); DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
}

SQL

IF EXISTS ( SELECT  A = 1
FROM sys.objects
WHERE name = 'PRCreate '
AND type = 'P' )
DROP PROCEDURE dbo.PRCreate go IF EXISTS ( SELECT A = 1
FROM sys.table_types
WHERE name = 'tempPR '
AND is_user_defined = 1 )
DROP TYPE dbo.tempPR go CREATE TYPE dbo.tempPR AS TABLE
(
PT_PCURR decimal(15, 2), --这2个字段必须与传入的C# datatable中 字段的先后顺序一致
MATNR varchar(18)--
) go CREATE PROCEDURE dbo.PRCreate
(
@User AS dbo.tempPR READONLY, --C# datatable参数
@pCode varchar(50),
@gsdm varchar(50),
@khdm varchar(50),
@qy varchar(50)
)
AS
BEGIN
  SELECT * FROM @User
  END

调用

            DataSet ds = new DataSet();
ds = SqlHelper.fnInsertSingleUser(dt, "PRCreate", param[], param[], param[], param[]);//在存储过程中处理,返回结果集

调用时注意传入的参数必须与存储过程中 @User @pCode @gsdm @khdm @qy 的参数一致(见第一段代码)

重点:

1、就是传入存储过程的Datatable参数的字段先后顺序,必须与在存储过程中创建的表字段的先后顺序一致

2、调试:用一句select语句,返回一个DataSet到C#中看看,传入datatable是否正确


												

C# 将Datatable作为参数,传入存储过程的更多相关文章

  1. 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

    领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...

  2. mysql表名作为参数传入存储过程

    有以下存储过程: CREATE DEFINER=`root`@`localhost` PROCEDURE `P_HoverTreePages`( ), ) , ), ), ), IN `SortTyp ...

  3. SQL Server将DataTable传入存储过程(Table Value Parameter)

    博主在做毕业设计的时候,需要用到事务处理和多次将数据写入不同的表中,但是 SQL Server 数据库是不支持数组类型变量的,想要实现数组的功能,可以通过 XML 和数据表的方法实现,但是实现方法非常 ...

  4. c#调用Mysql带参数的存储过程

    1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo  ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过 ...

  5. 【Mybatis】MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别

    用过mybatis的应该都知道它是ibatis被Google收购后重新命名的一个工程,因此也做了大量升级.本文就来介绍下两者在调用存储过程上的一点区别,ibatis有一个专门的标签<proced ...

  6. C# 调用带输入输出参数的存储过程

    //调用存储过程执行类似于2//select count(*) from userinfo where username=username and pwd=pwd and grade=grade3// ...

  7. [转]SSIS OLE DB Source中执行带参数的存储过程

    本文转自:http://www.cnblogs.com/michaelxu/archive/2009/10/21/1587450.html 问题描述:执行一个存储过程得到一个多条记录的结果集,然后循环 ...

  8. 创建有输出参数的存储过程并在c#中实现DataGridView分页功能

    不足之处,欢迎指正! 创建有输出参数的存储过程 if exists(select * from sysobjects where name='usp_getPage1') drop procedure ...

  9. 在论坛中出现的比较难的sql问题:14(存储过程问题 存储过程参数、存储过程内的参数)

    原文:在论坛中出现的比较难的sql问题:14(存储过程问题 存储过程参数.存储过程内的参数) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的 ...

随机推荐

  1. 从wordcount 开始 mapreduce (C++\hadoop streaming模式)

    序:终于开始接触hadoop了,从wordcount开始 1. 采用hadoop streamming模式 优点:支持C++ pathon shell 等多种语言,学习成本较低,不需要了解hadoop ...

  2. uva 133 The Dole Queue 双向约瑟夫环 模拟实现

    双向约瑟夫环. 数据规模只有20,模拟掉了.(其实公式我还是不太会推,有空得看看) 值得注意的是两个方向找值不是找到一个去掉一个,而是找到后同时去掉. 还有输出也很坑爹! 在这里不得不抱怨下Uva的o ...

  3. [转]Ubuntu中无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)

    sudo apt-get install git E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/ ...

  4. li颜色特效

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  5. [算法练习] UVA-10010-Where's Waldorf?

    UVA Online Judge 题目10010 Where's Waldorf?  Waldorf在哪? 问题描述: 给出一个m行n列的字符矩阵(),和一个单词列表,在矩阵上匹配每个单词.在矩阵上匹 ...

  6. Ubuntu系统中登陆阿里云服务器的方法

    如果您购买了阿里云服务器,恰巧又在使用Ubuntu操作系统,那么恭喜你来对地方了,今天给大家分享一下如何在Ubuntu中登陆阿里云服务器: 主要使用两款软件:1.SecureCRT:2.SecureF ...

  7. 自己封装的SqlHelper

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  8. 利用ADO方式连接SQLServer2008出现的问题

    在利用ADO方式连接SQLServer2008的过程中遇到了很多问题,在网上也没有找到许多有利的信息,花了两天时间,终于把所有问题都搞定了.在这里和大家分享一下经验,希望后来者能少走弯路. 很多教程说 ...

  9. DOS批处理命令-几个固定名称的变量

    批处理中有一些变量的变量名称是固定的,具有特定的意义,接下来,我们来看看这些有特定意义的变量到底有什么意义. 1.%CD%   当前路径的路径名[盘符 + 路径]    - 現在のディレクトリ文字列に ...

  10. Crontab使用mailx的一点发现

    要用到Crontab定时任务去执行一个Shell脚本监控Linux系统资源并且当一些数字超过预设的话发送邮件警告.首先是linux的sendmail功能无法满足我们使用SMTP服务器并且指定发送者(E ...