谓存储过程就是Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。由于存储过程被预先编译过,所以执行起来要比单行SQL语句效率高出很多,在应用程序开发过程中应尽可能的采用存储过程进行数据的增加、更新、删除和查询操作,以提升应用程序的整体运行效率。
执行SQL Server的存储过程需要如下步骤:
1、生成SqlCommand对象并将其CommandText属性设置为存储过程的名称或包含过程调用的 EXECUTE语句。
2、增加过程调用所需要的参数到SqlCommand对象中,记住将任何输出参数的Direction属性设置为ParameterDirection.Output,代码如下:
comm.Parameters["@msg"].Direction=ParameterDirection.Output;
这些输出参数可以在存储过程调用中用T-SQL OUTPUT关键字定义,也可以在实际过程中用RETURN语句返回。如果用RETURN语句返回执行结果,需要给SqlCommand对象的Parameters列表,添加如下代码:
comm.Parameters.Add("RETURN_VALUE",SqlDbType.Int);
并将Direction属性设置为ParameterDirection.ReturnValue,代码如下:
comm.Parameters["RETURN_VALUE"].Direction=ParameterDirection.ReturnValue;
3、用ExecuteNonQuery()方法执行SqlCommand对象。
4、读取任何输出参数的值。
执行只有返回值的存储过程
1、后台建立存储过程
create proc selectserverdate
@date varchar(14) OUTput,@datetime datetime output
AS
SET @date=DATENAME(yy,GETDATE())+‘年’+ DATENAME(mm,GETDATE())+‘月’
+ DATENAME(dd,GETDATE()) +'日'
SET @datetime=getdate()
2、前台调用执行存储过程
SqlCommand cmd=new SqlCommand(“selectserverdate”,con);//建立SqlCommand对象
cmd.CommandType=CommandType.StoredProcedure;//设置SqlCommand对象执行类型为存储过程
cmd.Parameters.Add(“@date”,SqlDbType.VarChar,14);//向Parameters参数列表添加参数
cmd.Parameters.Add("@datetime",SqlDbType.DateTime,8);
cmd.Parameters[“@date”].Direction=ParameterDirection.Output;//设置参数的输出类型
cmd.Parameters["@datetime"].Direction=ParameterDirection.Output;
cmd.ExecuteNonQuery();//执行存储过程
Session[“date”]=cmd.Parameters[“@date”].Value;//获取存储过程的返回值
Session["datetime"]=cmd.Parameters["@datetime"].Value;
DateTime weekday=new DateTime();
weekday=Convert.ToDateTime(cmd.Parameters["@datetime"].Value);
string date=weekday.DayOfWeek.ToString();
执行带输入参数、输出参数和返回值的存储过程
1、后台建立存储过程
create proc IUD_dept(@zxcs AS VARCHAR(6),@dept AS varchar(10),
@ID AS uniqueidentifier,@msg varchar(16) output)
as
begin tran
BEGIN
if @zxcs='INSERT'
BEGIN
INSERT INTO dept(dept) VALUES(@dept)
END
if @zxcs='UPDATE'
BEGIN
DECLARE @OLD_DEPT VARCHAR(10)
SELECT @OLD_DEPT=dept FROM DEPT WHEREID=@ID
UPDATE VERIFY SETdept=@deptWHEREdept=@OLD_DEPT
UPDATE dept SETdept=@deptWHEREID=@ID
END
if @zxcs='DELETE'
BEGIN
DELETE FROM dept WHEREID=@ID
END
END
if @@error<>0
BEGIN
rollback tran
SET @msg='数据'+@zxcs+'失败?'
SELECT @msg--输出后在前台接收
RETURN 1
END
else
BEGIN
commit tran
SET @msg='数据'+@zxcs+'成功!'
SELECT @msg--输出后在前台接收
RETURN 0
END
2、前台调用执行存储过程
//设置增删改的存储过程所需要的参数
comm=new SqlCommand("IUD_dept",con); //建立SqlCommand对象
comm.CommandType=CommandType.StoredProcedure; //设置SqlCommand对象执行类型为存储过程
comm.Parameters.Add("@zxcs",SqlDbType.VarChar,6); //向Parameters参数列表添加参数
comm.Parameters.Add("@dept",SqlDbType.VarChar,10);
comm.Parameters.Add("@id",SqlDbType.UniqueIdentifier);
comm.Parameters.Add("@msg",SqlDbType.VarChar,16);
comm.Parameters.Add(“RETURN_VALUE”,SqlDbType.Int); //有RETURN返回值需要向参数列表添加
comm.Parameters["@msg"].Direction=ParameterDirection.Output; //设置参数的输出类型
comm.Parameters[“RETURN_VALUE”].Direction=ParameterDirection.ReturnValue;
comm.Parameters[“@zxcs”].Value=“INSERT”;//执行INSERT操作
comm.Parameters[“@dept”].Value=“信息组”;
comm.Parameters["@id"].Value=new Guid("6D739432-3EDD-458C-9C52-5C2EA74A5DD6“);
comm.ExecuteNonQuery();
Response.Write(comm.Parameters["@msg"].Value+“<br>“);
Response.Write(comm.Parameters["RETURN_VALUE"].Value +“<br>“);
if((Int32)comm.Parameters[“RETURN_VALUE”].Value==0)
{ 代码块 }
说明:SQL Server中的UniqueIdentifier数据类型在.NET中需要使用new Guid()类进行转换
分享到:
相关推荐
oracle存储过程使用文档中描述了存储过程创建的过程,和一些注意事项
ASP存储过程使用大全 ASP存储过程使用大全
oracle存储过程使用游标对多表操作例子
Oracle存储过程中使用临时表 会话级临时表 事务级临时表
NULL 博文链接:https://snowelf.iteye.com/blog/575555
db2 存储过程 db2 存储过程 db2 存储过程
asp存储过程使用大全
超详细Oracle存储过程使用手册 超详细Oracle存储过程使用手册
oracle存储过程使用详解,初学者可以很快入门
4.各种存储过程使用指南 5.ASP中存储过程调用的两种方式及比较 6.SQL存储过程在.NET数据库中的应用 7.使用SQL存储过程要特别注意的问题 1.sql存储过程概述 在大型数据库系统中,存储过程和触发器具有很重要的...
SQL Server存储过程使用剖析.pdf
使用存储过程是想循环insert 数据库中查询出来的复杂结果集
oracle存储过程使用游标判断2表差异,进行新增更新操作
本文实例讲述了MySQL存储过程的异常处理方法。分享给大家供大家参考。具体如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc -> (p_first_name VARCHAR(30), -> p_last_name VARCHAR(30)...
s2010 DataSet取数来源是存储过程时,无法取到临时表的列信息
【精华志】超详细Oracle存储过程使用手册 QQ交流群60168829 欢迎C# ASP.NET 和SQL新手 老手 高手加入 谢谢
java存储过程和PL/SQL存储过程的比较,Java存储过程的使用方法。
SQLSERVER存储过程使用说明书引言首先介绍一下什么是存储过程:存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还可以根据条件执行不同SQL...
适用于新手对数据库简单的操作 /* * 以下是对本地数据库和远程数据库192.168.80.211的User表 * 同时进行插入用户的操作存储过程 * 事务 */