




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C#调用存储过程简单完整例子 创建存储过程Create Proc dbo.存储过程名存储过程参数AS执行语句RETURN执行存储过程GODECLARE iRet INT, PKDisp VARCHAR(20)SET iRet = '1'Select iRet =CASEWHEN PKDisp = '一' THEN 1WHEN PKDisp = '二' THEN 2WHEN PKDisp = '三' THEN 3WHEN PKDisp = '四' THEN 4WHEN
2、PKDisp = '五' THEN 5ELSE 100ENDDECLARE i INTSET i = 1WHILE i<10 BEGINset i=i+1PRINT iENDDECLARE d INTset d = 1IF d = 1 BEGIN- 打印PRINT '正确'ENDELSE BEGINPRINT '错误'END CREATE PROC P_TESTName VARCHAR(20),Rowcount INT OUTPUTASBEGIN SELECT * FROM T_Customer WHERE N
3、AME=Name SET Rowcount=ROWCOUNTENDGO-存储过程调用如下:-DECLARE i INTEXEC P_TEST 'A',i OUTPUTSELECT i-结果/*Name Address Tel - - -
4、160;A Address Telphone(所影响的行数为 1 行) - 1(所影响的行数为 1 行)*/-DotNet 部分(C#)-WebConfig 文件:-. </system.web> <!- 数据库连接字符串
5、60; -> <appSettings> <add key="ConnectString" value="server=(local);User ID=sa;Password=;database=Test" /></appSettings> </configuration>-C#代码:(用到两个测试控件,DataGrid1(用于显示绑定结果集合),Lable(用于显示存储过程返回单值)-/添加数据库
6、引用using System.Data.SqlClient;. private void Page_Load(object sender, System.EventArgs e) / 在此处放置用户代码以初始化页面 String DBConnStr; DataSet MyDataSet=new DataSet(); System.Data.SqlClient.SqlDataAdapter DataAdapter=new Sys
7、tem.Data.SqlClient.SqlDataAdapter(); DBConnStr=System.Configuration.ConfigurationSettings.AppSettings"ConnectString" System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(DBConnStr); if (myConnection.St
8、ate!=ConnectionState.Open) myConnection.Open(); System.Data.SqlClient.SqlCommand myCommand = new System.Data.SqlClient.SqlCommand("P_Test",myConnection); myCommand.CommandTy
9、pe=CommandType.StoredProcedure; /添加输入查询参数、赋予值 myCommand.Parameters.Add("Name",SqlDbType.VarChar); myCommand.Parameters"Name".Value ="A" /添加输出参数 myCommand.Parameters.Add("Rowcount&q
10、uot;,SqlDbType.Int); myCommand.Parameters"Rowcount".Direction=ParameterDirection.Output; myCommand.ExecuteNonQuery(); DataAdapter.SelectCommand = myCommand; if (MyDataSet!=null)
11、60;DataAdapter.Fill(MyDataSet,"table"); DataGrid1.DataSource=MyDataSet; DataGrid1.DataBind(); /得到存储过程输出参数 Label1.Text=myCommand.Parameters"Rowcount".Value.ToString();
12、0; if (myConnection.State = ConnectionState.Open) myConnection.Close(); -运行以上代码即可(返回记录集合和存储过程返回值)一、简介:存储过程(Stored Procedure), 是一组为了完成特定功能的SQL 语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数,如果该存储过程带有参数来执行它,在SQL Server 的系列版本中,存储过
13、程分为两类:系统提供的存储过程和用户自定义存储过程。系统SP,主要存储 master 数据库中,并以sp_为前缀并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Server。 用户自定义存储过程是由用户创建,并能完成某一特定功能,如:查询用户所需数据信息的存储过程。存储过程具有以下优点:?1.存储过程允许标准组件式编程(模块化设计)存储过程在被创建以后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句,而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代码毫无影响。因为应用程序源代码只包含存储过程的调用语句,从而极大地提高了程序的可移植性。2
14、.存储过程能够实现快速的执行速度如果某一操作包含大量的Transaction-SQL 代码,,或分别被多次执行,那么存储过程要比批处理的执行速度快很多,因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析优化,并给出最终被存在系统表中的执行计划,而批处理的Transaction-SQL 语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。3.存储过程能够减少网络流量对于同一个针对数据数据库对象的操作,如查询修改,如果这一操作所涉及到的 Transaction-SQL语句被组织成一存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用
15、语句,否则将是多条SQL 语句从而大大增加了网络流量降低网络负载。4.存储过程可被作为一种安全机制来充分利用系统管理员通过,对执行某一存储过程的权限进行限制,从而能够实现对相应的数据访问权限的限制。二、变量I三、流程控制语句(if else | select case | while )Select . CASE 实例DECLARE iRet INT, PKDisp VARCHAR(20)SET iRet = '1'Select iRet =CASEWHEN PKDisp = '一' THEN 1WHEN PKDisp = '二' TH
16、EN 2WHEN PKDisp = '三' THEN 3WHEN PKDisp = '四' THEN 4WHEN PKDisp = '五' THEN 5ELSE 100END四、存储过程格式创建存储过程Create Proc dbo.存储过程名存储过程参数AS执行语句RETURN执行存储过程GO理论知识:结束语法示例:开始- 变量的声明,sql里面声明变量时必须在变量前加符号DECLARE I INT- 变量的赋值,变量赋值时变量前必须加setSET I = 30- 声明多个变量DECLARE s varchar(10),a INT-
17、Sql 里if语句IF 条件 BEGIN执行语句ENDELSE BEGIN执行语句ENDDECLARE d INTset d = 1IF d = 1 BEGIN- 打印PRINT '正确'ENDELSE BEGINPRINT '错误'END- Sql 里的多条件选择语句.DECLARE iRet INT, PKDisp VARCHAR(20)SET iRet = 1Select iRet =CASEWHEN PKDisp = '一' THEN 1WHEN PKDisp = '二' THEN 2WHEN
18、 PKDisp = '三' THEN 3WHEN PKDisp = '四' THEN 4WHEN PKDisp = '五' THEN 5ELSE 100END- 循环语句WHILE 条件 BEGIN 执行语句ENDDECLARE i INTSET i = 1WHILE i<1000000 BEGINset i=i+1END- 打印PRINT i语法示例:结束相关说明:开始?- TRUNCATE 删除表中的所有行,而不记录单个行删除操作,不能带条件TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相
19、同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源少。Delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 Delete。如果要删除表定义及其数据,请使用 Drop TABLE 语句。对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TA
20、BLE,而应使用不带 Where 子句的Delete 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。TRUNCATE TABLE 不能用于参与了索引视图的表。示例下例删除 authors 表中的所有数据。TRUNCATE TABLE authors- Select INTO 从一个查询的计算结果中创建一个新表。 数据并不返回给客户端,这一点和普通的- Select 不同。 新表的字段具有和 Select 的输出字段相关联(相同)的名字和数据类型。select * into NewTablefrom Uname- Insert INTO Select- 表ABC必须存在- 把表Unam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025授权许可合同范本
- 2025年订购户外全彩LED电子显示屏委托制作合同
- 《钢结构设计原则》课件
- 《深入了解性传播疾病》课件
- 《深入探索中医养生》课件
- 小升初-语文基础卷06
- 天津市部分区2025届高三下学期3月一模试题 政治 含解析
- (二统)曲靖市2024-2025学年高三年级第二次教学质量监测政治试卷(含答案)
- 2025年内江道路货物运输驾驶员考试
- 沈阳工业大学《内耳前庭功能评估与康复》2023-2024学年第一学期期末试卷
- 新媒体技术应用 课件 5.1.1易企秀如何制作H5
- 如何正确佩戴安全帽
- 【高考真题】2022年新高考物理真题试卷-河北卷(含答案)
- 社保系统保密培训
- 2024-2030年中国临近空间飞行器发展规划及未来前景展望研究报告
- 瑞幸咖啡认证考试题库(值班主管)
- 工厂自动化规划报告
- 2023年LNG设备操作维护手册培训资料
- 一般企业财务报表附注(模板)
- 【MOOC】倾听-音乐的形式与审美-武汉大学 中国大学慕课MOOC答案
- 人力资源调配应急演练
评论
0/150
提交评论