C#中执行存储过程并在SQL server中调试
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中调试的更多相关文章
- 在SQL Server数据库中执行存储过程很快,在c#中调用很慢的问题
记录工作中遇到的问题,分享出来: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一个比较郁闷的问题, ...
- C#中 将图片保存到Sql server 中
private void Form1_Load(object sender, EventArgs e) { #region 保存数据库 string url = @"C:\Users\Adm ...
- 理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程
本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(1)--简介 本文介绍SQL Server如何编译存储过程并使用计划缓存 ...
- SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- 【转】SQL Server中关于跟踪(Trace)那点事
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- SQL Server中关于跟踪(Trace)那点事(转载)
前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...
- 【转贴】SQL Server中关于跟踪(Trace)那点事
SQL Server中关于跟踪(Trace)那点事 https://www.cnblogs.com/zhijianliutang/p/4113911.html 作者很牛B.. 前言 一提到跟踪俩字,很 ...
- SQL Server 中的 ACID 属性
SQL Server 中的事务是什么? SQL Server 中的事务是一组被视为一个单元的 SQL 语句,它们按照"做所有事或不做任何事"的原则执行,成功的事务必须通过 ACID ...
- [转]细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
随机推荐
- 如何使用python发送邮件
使用python发送邮件,用的是SMTP协议. 因此在qq邮箱中,要设置开启SMTP服务 只要能开启一个就行 在我们执行程序的时候,会发现邮件被发送过来了 在python中还有一个更简单的第三方模块, ...
- pymongo: MongoClient opened before fork错误排解
使用pymongo配合flask和gunicorn使用的时候触发以下错误信息: [2017-09-19 15:20: ] [25780] [CRITICAL] WORKER TIMEOUT (pid: ...
- android 画竖虚线
参考:http://blog.csdn.net/zhao2017/article/details/73866460 1.在Android中写横虚线比较简单,写竖虚线的话稍微麻烦点: 需要将写的虚线旋转 ...
- hdu 5144(三分+物理)
NPY and shot Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- CF985B Switches and Lamps【矩阵操作/枚举】
[链接]CF985B [题意]:给n盏灯,m个开关,每次按开关只能将灯从灯灭的状态转变为灯亮,问是否存在不按所有开关就将所有灯打开的方法. [分析]:有两种办法,一种代码复杂点,容易想到枚举去掉每一行 ...
- 中矿新生赛 H 璐神看岛屿【BFS/DFS求联通块/连通块区域在边界则此连通块无效】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld 题目描述 璐神现在有张n*m大小的地图,地图上标明了陆地(用 ...
- 洛谷——P1755 斐波那契的拆分
P1755 斐波那契的拆分 题目背景 无 题目描述 已知任意一个正整数都可以拆分为若干个斐波纳契数,现在,让你求出n的拆分方法 输入输出格式 输入格式: 一个数t,表示有t组数据 接下来t行,每行一个 ...
- hiho一下第128周 后缀自动机二·重复旋律5
#1445 : 后缀自动机二·重复旋律5 时间限制:10000ms 单点时限:2000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数 ...
- luogu P1494 岳麓山上打水
题目描述 今天天气好晴朗,处处好风光,好风光!蝴蝶儿忙啊,蜜蜂也忙,信息组的同学们更加忙.最近,由于XX原因,大家不得不到岳麓山去提水.55555555~,好累啊. 信息组有一个容量为q升的大缸,由于 ...
- 【bzoj4318】【OSU!】期望dp——维护多个期望值递推
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62369739 Description osu 是 ...