StoredProcedure「建议收藏」

StoredProcedure「建议收藏」 这个玩意称为存储过程,类似于其他编程语言中的函数,它含有可与IF,WHILE等这样的编程构造所结合的SQL语句,以编译的形式保存在数据库中。存储过程可用来编写数据库中处理事务的代码。它可以做SQL所可以做的所有事情!!!它的特点是:1,可以接受输入参数,以输出参数的形式给调用过程返回多个值。2,可以给调用过程或批处理返回状态值,表示成功或失败。3,可以调用其它存储过程并执

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
 

这个玩意称为存储过程,类似于其他编程语言中的函数,它含有可与IFWHILE等这样的编程构造所结合的SQL语句,以编译的形式保存在数据库中。存储过程可用来编写数据库中处理事务的代码。

它可以做SQL所可以做的所有事情!!!

它的特点是:

1,可以接受输入参数,以输出参数的形式给调用过程返回多个值。

2,可以给调用过程或批处理返回状态值,表示成功或失败。

3,可以调用其它存储过程并执行它们。

4,允许模块化编程,就是说可以独立于应用程序创建它们,可以在不重新编译应用程序的情况下修改它们。

5,允许以更快的速度执行。在客户服务器系统中,使用存储过程可以大大的提高性能。

6,减少网络通信量。

7,可以使用安全机制。

 

在程序中,StoredProcedure是单独存储的。但是它是和数据库是联系在一起的。

我们可以使用visual studioServer Explorer,来查看StoredProcedure

 

当将 CommandType 属性设置为 StoredProcedure 时,应将 CommandText 属性设置为存储过程的名称。当调用“执行”(Execute) 方法之一时,该命令将执行此存储过程。

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandText=”sp_Select_AllEmployees”;

还记得这两句代码吗?这是在components的源文件中常见的。

 

 

虽然可以通过以 SQL 语句的形式传递参数自变量之前的存储过程名称来调用存储过程,但如果使用 ADO.NET Command 对象的 Parameters 集合,则可以显式地定义存储过程参数并访问输出参数和返回值。

Parameter 对象可以使用 Parameter 构造函数来创建,或通过调用 Command Parameters 集合的 Add 方法来创建。Parameters.Add 会将构造函数参数或现有 Parameter 对象用作输入。

对于 Input 参数之外的参数,必须设置 ParameterDirection 属性来指定参数类型是 InputOutputOutput 还是 ReturnValue默认情况下,是输入参数。

 

看一段实际代码

SqlCommand sampleCMD = new SqlCommand(“SampleProc”, nwindConn);

sampleCMD.CommandType = CommandType.StoredProcedure;

 

SqlParameter sampParm = sampleCMD.Parameters.Add(“RETURN_VALUE”, SqlDbType.Int);

sampParm.Direction = ParameterDirection.ReturnValue;

 

sampParm = sampleCMD.Parameters.Add(“@InputParm”, SqlDbType.NVarChar, 12);

sampParm.Value = “Sample Value”;

 

sampParm = sampleCMD.Parameters.Add(“@OutputParm”, SqlDbType.NVarChar, 28);

sampParm.Direction = ParameterDirection.Output;

 

nwindConn.Open();

 

SqlDataReader sampReader = sampleCMD.ExecuteReader();

 

Console.WriteLine(“{0}, {1}”, sampReader.GetName(0), sampReader.GetName(1));

 

while (sampReader.Read())

{

Console.WriteLine(“{0}, {1}”, sampReader.GetInt32(0), sampReader.GetString(1));

}

 

sampReader.Close();

nwindConn.Close();

 

Console.WriteLine(” @OutputParm: {0}”, sampleCMD.Parameters[“@OutputParm”].Value);

Console.WriteLine(“RETURN_VALUE: {0}”, sampleCMD.Parameters[“RETURN_VALUE”].Value);

 

ReturnValue:用来捕捉StoredProcedureReturn值。

使用Output参数返回值的存储过程非常有用,他们可用于从数据库中检索几份信息,但信息互不相关,或者在结果集中获取信息。

 

了解一下使用了StoredProcedure的应用程序,它们一般分成两个部分:

1StoredProcedure

ALTER PROCEDURE sp_Dates_ByEmployeeId

 

(

@EmployeeID int,

@EDate datetime OUTPUT,

@LDate datetime OUTPUT

 

)

 

AS

/* SET NOCOUNT ON */

SELECT @EDate=Min(OrderDate)

FROM Orders

WHERE EmployeeId=@EmployeeID

 

SELECT @LDate=Max(OrderDate)

FROM Orders

WHERE EmployeeId=@EmployeeID

RETURN

 

2,应用程序的对应部分:

      cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandText=”sp_Dates_ByEmployeeId”;

 

SqlParameter parInput = cmd.Parameters.Add(“@EmployeeId”,SqlDbType.Int);

parInput.Direction = ParameterDirection.Input;

parInput.Value = Convert.ToInt32(txtEmpId2.Text);

 

 

SqlParameter parOutput2 = cmd.Parameters.Add(“@LDate”,SqlDbType.DateTime);

parOutput2.Direction = ParameterDirection.Output;

 

 

SqlParameter parOutput1 = cmd.Parameters.Add(“@EDate”,SqlDbType.DateTime);

parOutput1.Direction = ParameterDirection.Output;

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164499.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • window32api_win32api与硬件设备

    window32api_win32api与硬件设备作者:浪子花梦,一个有趣的程序员~.Win32API相关文章如下:Win32利用CreateEvent实现简单的——线程同步Win32消息处理机制与窗口制作Win32远程线程注入.dll文件Win32删除目录下的所有文件——递归遍历(一)Win32服务程序编写——使用SC命令创建与删除(二)Win32服务程序编写——使用命令行参数创建与删除Win32使用快照、psapi.dll、wtsapi32.dll、ntdll.dll四种方式实现——枚举进程(一)..

    2022年10月11日
    3
  • 网络交换机光口和电口_交换机的光口

    网络交换机光口和电口_交换机的光口 一、光口1、基本概念     光口是光纤接口的简称。   也可称之为:G口 (意思是G光纤口)   光口:所应用于机房,机柜等大型设备的一个光纤带宽接口。   光纤可以用于音频(声卡有光输出的),网络(光纤作为传输介质),磁盘(光纤代替电缆传输数据)等等。   光纤又可分为单模光纤和多模光纤区别如下:   单模光纤和多模光纤可以从纤芯的尺…

    2022年10月21日
    4
  • 计算机的储存容量1kb等于多少byte,1M等于多少字节?

    计算机的储存容量1kb等于多少byte,1M等于多少字节?1M等于多少字节?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1M等于多少字节?不是1M等于多少字节,是1MB等于多少字节。字节(Byte/bait/n.[C])是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。字节用符号“B”表示。MB(全称MByte):计算机中…

    2022年5月9日
    82
  • CSGO国内开箱网站大全incsgo skinsdog狗网 coolkaixiang 88steam「建议收藏」

    CSGO国内开箱网站大全incsgo skinsdog狗网 coolkaixiang 88steam「建议收藏」CSGO国内开箱网站大全收录incsgo官网,skinsdog狗网官网,coolkaixiang官网,88steam官网,Box818官网,Piggycase官网,Yskins官网incsgo国内CSGO饰品皮肤开箱网站官方链接:www.incsgo.gg注册登录自动免费获得$1.00美金取回状态:直接取回**优惠码:**csgogo(充值使用csgogo可增加5%充值金额)skinsdog狗网CSGO饰品皮肤开箱网站可直接取回官方链接:skinsdog.c.

    2022年10月6日
    3
  • 转:MFC之COleVariant[通俗易懂]

    转:MFC之COleVariant[通俗易懂]COleVariant本质上是一个枚举,用同一种类型来表达不同的子类型。如同boost中的variant。例子[cpp]viewplaincopyCOleVariantvar(3.6f);floatv=var.fltVal;CStringstr(“testCOleVariant”);COleVariantvar2(st…

    2022年7月18日
    14
  • 【技能树】预备知识-Python简介「建议收藏」

    【技能树】预备知识-Python简介「建议收藏」目录简介发展历史发展历程GuidovanRossum(吉多·范罗苏姆)人物经历主要成就ABC语言GNU特点优点缺点和其他语言区别Hello,World!简介Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python是交互式语言

    2022年5月20日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号