1.编写存储过程

 if exists (select * from sysobjects where id = object_id(N'[sp_calcPci_of_baseRcd_GTmpTbl]') and OBJECTPROPERTY(id, N'IsProcedure') = )
drop PROCEDURE [dbo].[sp_calcPci_of_baseRcd_GTmpTbl] CREATE PROCEDURE [dbo].[sp_calcPci_of_baseRcd_GTmpTbl]
--定义参数
@bdindexId INT ,
@groupId INT,
@disVal INT ,
@retVal INT OUTPUT, -- 返回值
@routeType INT --WITH ENCRYPTION -- 加密
AS
BEGIN
DECLARE @pciCalcRcdId0 INT
--执行另外一个存储过程,输出参数需带上关键字‘OUTPUT’
EXEC dbo.procGetCurNo 'PCA_T_D_PCICalcRcd', @pciCalcRcdId0 OUTPUT
IF( @pciCalcRcdId0 <= )
BEGIN--sql中没有{},以BEGIN、END代替
SET @retVal = -
RETURN -;
END SET @curSegIndex = ; --变量赋值
--为查询结果定义游标
DECLARE segListCursor CURSOR
FOR
SELECT section_code ,pav_type ,segment_code ,begin_mile ,end_mile ,segment_length, lane_width
FROM dbo.ZY_T_D_Segment
WHERE route_code = @routeCode AND up_down = @direction AND lane = @lane
AND begin_mile < @endMile AND end_mile > @beginMile AND valid_flag=
ORDER BY begin_mile;
--打开游标
OPEN segListCursor;
--按行取值
FETCH NEXT FROM segListCursor INTO @sectionCode, @pavType,
@segmentCode, @segBeginMile, @segEndMile, @segLength, @laneWidth;
WHILE @@FETCH_STATUS =
BEGIN --
---处理---
FETCH NEXT FROM segListCursor INTO @sectionCode,
@pavType, @segmentCode, @segBeginMile, @segEndMile,@segLength, @laneWidth;
END;
CLOSE segListCursor;--关闭游标
DEALLOCATE segListCursor;--释放游标 deallocate -- 将临时表中的数据插入到实际表a_test中
SET @insertSql = 'INSERT INTO ' + @pavDataLocTable + ' SELECT * FROM ' + @tempPavDataLocTable
EXEC sys.sp_executesql @insertSql
SET @insertSql = 'INSERT INTO ' + @pciCalcTable + ' SELECT * FROM ' + @tempPciCalcTable
EXEC sys.sp_executesql @insertSql DROP table [dbo].[##pavDataLoc_temp_table]
DROP table [dbo].[##pciCalc_temp_table]
END;
GO

2.C#中调用存储过程

 SqlParameter dmgPara1 = new SqlParameter("@bdindexId", SqlDbType.Int, );
dmgPara1.Value = pciCalcRcd.BdindexId;
SqlParameter dmgPara2 = new SqlParameter("@groupId", SqlDbType.Int, );
dmgPara2.Value = pciCalcRcd.GroupId;
SqlParameter dmgPara3 = new SqlParameter("@disVal", SqlDbType.Int, );
dmgPara3.Value = pciCalcRcd.DisVal;
SqlParameter dmgPara4 = new SqlParameter("@retVal", SqlDbType.Int, );
dmgPara4.Value = ;
dmgPara4.Direction = ParameterDirection.Output;//输出参数
SqlParameter dmgPara5 = new SqlParameter("@routeType", SqlDbType.Int, );
dmgPara5.Value = routeTypeVal;//道路等级,高速与一级公路为0,二三四级为1
SqlParameter[] sqlDmgParam = new SqlParameter[];
sqlDmgParam[] = dmgPara1;
sqlDmgParam[] = dmgPara2;
sqlDmgParam[] = dmgPara3;
sqlDmgParam[] = dmgPara4;
sqlDmgParam[] = dmgPara5;
// 根据病害,入库相应的路面破损数据
try
{
nRet = MsSqlTool.executeProcedureNoDataSet(conn, "sp_calcPci_of_baseRcd_GTmpTbl", sqlDmgParam);
}
catch (Exception ex)
{
}
if (int.Parse(sqlDmgParam[].Value.ToString()) <= )
{
return int.Parse(sqlDmgParam[].Value.ToString());//获取输出参数返回值
}
 public static int executeProcedureNoDataSet(SqlConnection dbConn, string strProcName, SqlParameter[] procParams)
{
SqlConnection conn = dbConn;
DataSet ds = new DataSet();
try
{
if (conn.State != ConnectionState.Open)
conn.Open(); // 确认打开连接  Open();  
SqlCommand cmd = new SqlCommand(strProcName, dbConn);  
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = ;
// 依次把参数传入存储过程 
if (procParams != null)  
{  
foreach (SqlParameter parameter in procParams)  
cmd.Parameters.Add(parameter);  
}    cmd.ExecuteNonQuery(); return ;
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
return ;
}

3.SQL 调试存储过程

C#中执行存储过程并在SQL server中调试的更多相关文章

  1. 在SQL Server数据库中执行存储过程很快,在c#中调用很慢的问题

    记录工作中遇到的问题,分享出来: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一个比较郁闷的问题, ...

  2. C#中 将图片保存到Sql server 中

    private void Form1_Load(object sender, EventArgs e) { #region 保存数据库 string url = @"C:\Users\Adm ...

  3. 理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程

    本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(1)--简介 本文介绍SQL Server如何编译存储过程并使用计划缓存 ...

  4. SQL Server中关于跟踪(Trace)那点事

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

  5. 【转】SQL Server中关于跟踪(Trace)那点事

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

  6. SQL Server中关于跟踪(Trace)那点事(转载)

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

  7. 【转贴】SQL Server中关于跟踪(Trace)那点事

    SQL Server中关于跟踪(Trace)那点事 https://www.cnblogs.com/zhijianliutang/p/4113911.html 作者很牛B.. 前言 一提到跟踪俩字,很 ...

  8. SQL Server 中的 ACID 属性

    SQL Server 中的事务是什么? SQL Server 中的事务是一组被视为一个单元的 SQL 语句,它们按照"做所有事或不做任何事"的原则执行,成功的事务必须通过 ACID ...

  9. [转]细说SQL Server中的加密

    简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...

随机推荐

  1. C#中一些关键字和罕见类

    1.@ 在处理字符串时,那些个字符串转义字符我们可以使用这个,那@就是为解决这个而诞生的,直接让字符串原样输出有木有?什么sql字符串了,还有路径啥了的,统统搞定 string sql = @&quo ...

  2. mysql运维必会的一些知识点整理(转自民工哥)

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  3. js-监听页面滚动

    两种监听页面滚动的方法 一.原生js通过window.onscroll监听 window.onscroll = function() { //为了保证兼容性,这里取两个值,哪个有值取哪一个 //scr ...

  4. UVALive(LA) 3644 X-Plosives (并查集)

    题意: 有一些简单化合物,每个化合物都由两种元素组成的,你是一个装箱工人.从实验员那里按照顺序把一些简单化合物装到车上,但这里存在安全隐患:如果车上存在K个简单化合物,正好包含K种元素,那么他们就会组 ...

  5. hdu6035(树形DP)

    hdu6035 题意 给出一棵树,现在定义两点之间距离为两点间最短路径上颜色集合的大小.问任意两点间距离之和. 分析 换个方向,题目其实等价于求每种颜色在多少条路径上出现过(每种颜色对于答案的贡献), ...

  6. Xamarin XAML语言教程使用属性设置进度条的当前进度

    Xamarin XAML语言教程使用属性设置进度条的当前进度 在图12.19~12.21中我们看到的是没有实现加载的进度条,即进度条的当前进度为0,如果开发者想要修改当前进度,可以使用两种方式:一种是 ...

  7. Union与UnionAll

    UNION指令的目的是将两个SQL语句的结果合并起来.从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION的一个限制是两个 ...

  8. linux-网络监控命令-netstat初级

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  9. PHP switch的“高级”用法详解

    只所以称为“高级”用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实还是它的基础用法! switch 语句和具有同样表达式的一系列的 IF 语句相似.很多场合下需要把同一个变 ...

  10. linux下打包,压缩,解压缩

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...