C#中执行存储过程并在SQL server中调试
2017-03-24 10:47
387 查看
1.编写存储过程
if exists (select * from sysobjects where id = object_id(N'[sp_calcPci_of_baseRcd_GTmpTbl]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 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 <= 0 ) BEGIN--sql中没有{},以BEGIN、END代替 SET @retVal = -5 RETURN -5; END SET @curSegIndex = 1; --变量赋值 --为查询结果定义游标 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=1 ORDER BY begin_mile; --打开游标 OPEN segListCursor; --按行取值 FETCH NEXT FROM segListCursor INTO @sectionCode, @pavType, @segmentCode, @segBeginMile, @segEndMile, @segLength, @laneWidth; WHILE @@FETCH_STATUS = 0 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, 4); dmgPara1.Value = pciCalcRcd.BdindexId; SqlParameter dmgPara2 = new SqlParameter("@groupId", SqlDbType.Int, 4); dmgPara2.Value = pciCalcRcd.GroupId; SqlParameter dmgPara3 = new SqlParameter("@disVal", SqlDbType.Int, 4); dmgPara3.Value = pciCalcRcd.DisVal; SqlParameter dmgPara4 = new SqlParameter("@retVal", SqlDbType.Int, 4); dmgPara4.Value = 0; dmgPara4.Direction = ParameterDirection.Output;//输出参数 SqlParameter dmgPara5 = new SqlParameter("@routeType", SqlDbType.Int, 4); dmgPara5.Value = routeTypeVal;//道路等级,高速与一级公路为0,二三四级为1 SqlParameter[] sqlDmgParam = new SqlParameter[5]; sqlDmgParam[0] = dmgPara1; sqlDmgParam[1] = dmgPara2; sqlDmgParam[2] = dmgPara3; sqlDmgParam[3] = dmgPara4; sqlDmgParam[4] = dmgPara5; // 根据病害,入库相应的路面破损数据 try { nRet = MsSqlTool.executeProcedureNoDataSet(conn, "sp_calcPci_of_baseRcd_GTmpTbl", sqlDmgParam); } catch (Exception ex) { } if (int.Parse(sqlDmgParam[3].Value.ToString()) <= 0) { return int.Parse(sqlDmgParam[3].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 = 3600; // 依次把参数传入存储过程 if (procParams != null) { foreach (SqlParameter parameter in procParams) cmd.Parameters.Add(parameter); } cmd.ExecuteNonQuery(); return 1; } catch (System.Exception ex) { throw ex; } finally { conn.Close(); } return 1; }
3.SQL 调试存储过程
相关文章推荐
- C# 调 SQL server与Oracle存储过程执行差异对比
- C#执行存储过程的简化
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 在SQL SERVER中定时执行SQL语句,或者存储过程
- [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)
- VSTS 2005 写SQL Server存储过程基础 (C#)
- C#执行存储过程的简化
- [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)
- 如何在SQL Server存储过程中执行DTS包
- 如何在SQL Server存储过程中执行DTS包
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 如何在SQL Server存储过程中执行DTS包
- 可执行个性化存储过程的数据访问层(DAL) (C#实现)
- [导入]调试SQL Server的存储过程及用户定义函数
- SQL Server联机丛书:执行存储过程
- 调试SQL Server的存储过程及用户定义函数
- 调试SQL Server的存储过程及用户定义函数
- 在SQL SERVER中定时执行SQL语句,或者存储过程.
- C# 编写SQL SERVER 2005 的存储过程
- 【xp_sqlagent_enum_jobs】取得SQL Server 作业执行状态的存储过程。