SQLServer中存储过程StoredProcedure创建及C#调用(转)
此文作为入门了解用,转自http://www.2cto.com/database/201502/378260.html
存储过程就是已经编译好的、优化过的放在数据库服务器中的一些SQL语句;可供应用程序直接调用。使用存储过程有以下几个优点:
1、执行速度比普通的SQL语句快
2、便于集中控制
3、可以降低网络的通信量
4、保证数据库的安全性和完整性
5、灵活性
创建存储过程
可以采用Transact-SQL语句来创建存储过程Stored Procedured。在Microsoft SQL Server Management Studio中Databases->Database Name->Programmability->Stored Procedures右键选择Stored Procedure就生成了一个创建存储过程的模板,修改其中的内容再执行就创建了Stored Procedured。
下面我首先以创建对表中插入数据的存储过程来为例。比如我的原始表是如下语句所创建的:
1
2
|
<code class= " hljs sql" >IF NOT EXISTS ( SELECT * FROM sysobjects WHERE id = object_id(N 'Persons' ) AND OBJECTPROPERTY(id,N 'isUserTable' ) = 1) CREATE TABLE Persons (Id_P int ,LastName varchar (255),FirstName varchar (255),Address varchar (255),City varchar (255))</code> |
Stored Procedure创建插入功能的SQL如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<code class= " hljs sql" >USE [databasename] GO /****** Object: StoredProcedure [dbo].[insert_persions] Script Date : 2/25/2015 11:14:11 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID ( 'insert_persons' , 'p' ) IS NOT NULL DROP PROCEDURE insert_persons; GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE insert_persons -- Add the parameters for the stored procedure here @id int , @lastname varchar (255), @firstname varchar (255), @adress varchar (255), @city varchar (255) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON ; -- Insert statements for procedure here INSERT Persons (Id_P, LastName, FirstName, Address, City) VALUES (@id, @lastname, @firstname, @adress, @city) END GO</code> |
以上代码完成了首先检查Stored Procedure是否存在,如果存在先把该Stored Procedure删掉,然后再创建该Stored Procedure。而其功能则是通过传入的参数,插入一条记录。直接点击Execute或者按F5则以上代码被执行,相应的数据库下面将有一个Stored Procedure名字为insert_persons。以SQL Server 2014为例,只要刷新相应的数据库,再到Programmability->Stored Procedures下面就发现多了个dbo.insert_persons。
执行存储过程
在Stored Procedures下面找到相应的存储过程,点击右键选择Execute Stored Procedure…就可以产生一个新的对话框,填写输入的参数再点击OK就执行完毕。回去查看相应的表会发现多了一行数据。
当然我们也可以通过SQL语句来执行存储过程。
1
2
|
<code class= " hljs ruby" > EXECUTE insert_persons 5, "Wang" , "San" , "Zhongguancun" , "Beijing" EXECUTE insert_persons @id = 6,@firstname = "Wang" ,@lastname = "San" ,@adress = "Zhongguancun" ,@city = "Beijing" </code> |
C#执行存储过程
下面的代码比较简单的展示了如何利用C#来执行上面创建的存储过程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<code class= " hljs avrasm" > String conStr = @ "Data Source=host\SQLEXPRESS;Initial Catalog=dbtan;Integrated Security=SSPI" ; SqlConnection con = new SqlConnection(conStr); try { con. Open (); Console.WriteLine( "Connect Sucess!" ); SqlCommand com = new SqlCommand(); com.CommandType = System.Data.CommandType.StoredProcedure; com. Connection = con; com.CommandText = "insert_persons" ; SqlParameter pId = new SqlParameter( "id" , 10); SqlParameter pLastName = new SqlParameter( "lastname" , "last" ); SqlParameter pFirstName = new SqlParameter( "firstname" , "first" ); SqlParameter pAdress = new SqlParameter( "adress" , "pop" ); SqlParameter pCity = new SqlParameter( "city" , "Hangzhou" ); com.Parameters. Add (pId); com.Parameters. Add (pLastName); com.Parameters. Add (pFirstName); com.Parameters. Add (pAdress); com.Parameters. Add (pCity); com.ExecuteNonQuery(); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { con. Close (); } Console.ReadKey();</code> |
SQLServer中存储过程StoredProcedure创建及C#调用(转)的更多相关文章
- SQLServer 中存储过程
SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)存储过程有三种返回: 1. 用return返回数字型数据 2. 用返回参数 ...
- Sqlserver中存储过程,触发器,自定义函数(一)
Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. ...
- Sqlserver中存储过程,触发器,自定义函数
Sqlserver中存储过程,触发器,自定义函数: 1. 触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活 触发器的分类: DML触发器:发生在数据操作语言执行时触发执行的 ...
- SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写
一.SqlServer 中 1. 创建表 create table testuser( id int, --primary key, names ), address ), paw ) ) 2.创建存 ...
- Sqlserver中存储过程,触发器,自定义函数(二)
Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数 ...
- SqlServer中存储过程中将Exec的执行结果赋值给变量输出
原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...
- MYSQL中存储过程的创建,调用及语法
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
- sqlserver 中存储过程的基础知识记录
1.什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 2.为什么要用存储过程? 1)存储过程只在创建时进行 ...
- sqlserver中,查看某个函数的调用情况
今天想在sqlserver中看看自己写的函数都被哪个函数或存储过程调用了,手工检查起来太慢了,于是在网上找一个快速的方法,分享一下. select * from sys.all_sql_modules ...
随机推荐
- 使用windos电脑模拟搭建集群(四)web环境 linux+nginx+jdk+tomcat
1.使用ansible的playbook自动安装两台web主机的nginx 1.配置模块 主机清单 2.创建 playbook目录并编写安装nginx的playbook mkdir -p playbo ...
- 使用windos电脑模拟搭建集群(三)实现全网监控
这里我们采用小米监控 open-falcon 这是server端就是 192.168.5.200 这台主机, agent就是负责将数据提交到 server端 agent整个集群所有主机都 ...
- (转)Ubuntu安装g++-4.8
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install g++-4.8 ...
- (15)oracle序列
1.创建序列 CREATE SEQUENCE EMP_SEQ START WITH 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 NOCYCLE ...
- Qt如何学习(参考官方文档)
Designers who are familiar with web development can start with QML 一共有四种安装工具 You have following opti ...
- [ZJb417]区间众数
题目大意: 给定一个长度为$n(1\leq n\leq10^5)$的正整数序列$s(1\leq s_i\leq n)$,对于$m(1\leq m\leq10^)$次询问$l,r$,每次求区间$[s_l ...
- 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-切入点(pointcut)API
本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 让我们看看 Spring.N ...
- 数据块dump详解及大小表扫描过程
http://blog.csdn.net/u013820054/article/details/40378233 http://blog.csdn.net/u013820054/article/cat ...
- Visio整体移动
同理选中第一列的两个,按向右箭头,整体友谊.
- Visio中汇总两个箭头
RT,相似度和信任度矩阵融合,两个箭头,选中其中一个,可以选格式--线条--终点选无,或者在快捷那选线条.