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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL数据库Rownumber()的两种排序方式

    SQL数据库Rownumber()的两种排序方式提示。先按一个字段分组,再按一些字段排序,最后编号。代码如下:selectrow_number()over(partitionbyUserIporderbyinsertTime),*fromuseraccess以上就是SQLServer数据库row_number()over()来自动产生行号的过程,ROW_NUMBER()OVER(PARTITIO…

    2022年5月28日
    89
  • 六个可以永久收藏的网站

    六个可以永久收藏的网站1:Aconvertaconvert.com/cnAconvert是一个完全免费并且不限转换次数的多功能文件格式转换网站,转换效果非常出色。它的功能非常强大,支持转换的文件类型包括:PDF、文档、电子书、图像、视频、音频、压缩文件。它还支持将网页转换为PDF、JPG、PNG格式。其中PDF格式转换,不仅支持将Word、Excel、PPT、HTML、TXT、DWG、JPG、PNG、GIF和TIFF文件转换为PDF,也支持将PDF文件转换为Word、Excel

    2022年5月18日
    622
  • assertthat和assertequals的区别_assertEquals

    assertthat和assertequals的区别_assertEqualsASSERT_VALID()与ASSERT()异同ASSERT()是MFC库中的断言,用法是ASSERT(布尔表达式).ASSERT宏用于确保参数内的表达式正确,如果表达式为false,则会显示一个消息对话框,其中有源文件的名字和当前行号,用户可以

    2025年9月23日
    5
  • let’s encrypt免费证书 制作 HTTPS证书[通俗易懂]

    let’s encrypt免费证书 制作 HTTPS证书

    2022年3月5日
    158
  • eclipse安装教程(win10版本,很全的)

    eclipse安装教程(win10版本,很全的)第一步:下载JDK。先给上下载链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html之后根据自己的系统选择,x86代表32位,x64代表64位。点击相应的jdk下载。同意之后下载。(记住下载到哪,打开之后一路同意安装即可)记住你把Jdk安装到哪里,文件路径不要有中文,有时会无法识别,我是将jdk安装到D盘java文件夹下第二步:java环境变量配置。(这是第一种方法,还有第二种设置JAVA_HOME,个人推

    2022年6月13日
    66
  • vmware安装苹果系统_vmware可以安装苹果系统吗

    vmware安装苹果系统_vmware可以安装苹果系统吗0202年了,虽然没有苹果机,但我有虚拟机呀。手把手教你在VMware安装苹果虚拟机,防坑避雷,亲测有效。文章目录写在前面VMareunlockios镜像创建虚拟机坑点不可恢复错误:(vcpu-0)鼠标键盘失灵联网问题安装系统

    2022年10月1日
    3

发表回复

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

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