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


相关推荐

  • Maven 菜鸟教程 3 怎样启动web项目

    Maven 菜鸟教程 3 怎样启动web项目方案1:dos运行运行cmd输入mvnjetty:runjetty插件版本先在pom.xml添加jetty插件jdk7可以使用jetty插件7.1.0.RC1jdk8要使用高版本插件,如8.1.16.v20140903org.mortbay.jetty

    2025年10月1日
    2
  • lambda表达式用法_使用lambda表达式定义函数

    lambda表达式用法_使用lambda表达式定义函数一、Lamabda表达式定义二、Lamabda表达式语法三、C#中Lamabda使用场景四、J

    2022年9月19日
    2
  • 数据库mysql等相关问题整理总结

    记录和总结Mysql相关的一些知识!Mysql索引Mysql索引整理总结 【四星】❤❤❤❤ 点评:熟悉和了解Mysql 的索引和索引的创建以及索引在实际使用中注意的点! Mysql更新死锁问题MySQL更新死锁问题 【五星】❤❤❤❤❤ 不恰当的update语句使用主键和索引导致mysql死锁 【五星】❤❤❤❤❤ 点…

    2022年2月27日
    190
  • pycharm中plt.plot没有把图画出来_pycharm运行不出来图片

    pycharm中plt.plot没有把图画出来_pycharm运行不出来图片一、问题描述pycharm开发工具使用plt.show()不显示图像,代码运行也不报错,如下图:二、问题原因pycharm开发工具中窗口显示的问题三、解决方式1、依次点击【File】——>【Setting】——>【Tools】——>【PythonScientific】–【取消勾选】-——>【Apply】-——>【ok】,如下图:2、再次运行程序即可显示图形,如下图:…

    2022年8月27日
    6
  • 各Liunx安装cockpit

    各Liunx安装cockpitFedora安装sudodnfinstallcockpit开启cockpit:sudosystemctlenable–nowcockpit.socket加入防火墙策略sudofirewall-cmd–add-service=cockpitsudofirewall-cmd–add-service=cockpit–permanentRedHat…

    2025年6月30日
    2
  • vscode配置java环境最新_VScode中文

    vscode配置java环境最新_VScode中文VScode配置Java环境1.VisualStudioCode介绍VisualStudioCode(简称“VSCode”)是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于MacOSX、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如

    2022年10月4日
    3

发表回复

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

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