计算机数据库

SQL存储过程:创建和使用

SQL存储过程是可以存储在可执行软件模块数据库中的各种物体的形式。 换句话说,它是一个包含SQL语句的对象。 这些存储过程可以在客户端应用程序,以获得良好的性能来执行。 此外,这种设备通常是由其他脚本,甚至从其他部分调用。

介绍

许多人认为,它们类似于各种手续 高级编程语言 (分别是,除了MS SQL)。 也许这是真的。 它们有相似的参数,它们可以发出类似的值。 此外,在一些情况下,他们接触到的。 例如,它们相结合,与DDL的数据库和DML数据,以及用户功能(代号 - UDF)。

实际存储SQL过程有一个宽范围的区分它们这样的过程中的优点。 安全性,可变性编程效率 - 这一切都吸引着用户来使用数据库,越来越多。 普及的高峰期出现程序2005 - 2010年,当我从名称«SQL Server Management Studio中»下的“微软”的方案。 有了它的帮助,与数据库的工作变得更容易,更实用,更方便。 年复一年,这种 传递信息的方法, 在编程环境中得到普及。 今天, MS SQL服务器 绝对是平常的程序,让用户在“沟通”与数据库,站在以“创先争优”相提并论。

当你调用的程序,它会立即由服务器,而无需不必要的进程和用户介入处理。 然后,您可以执行与信息采取任何行动:删除,执行,变更。 在这一切都是在DDL运营商,谁一手执行对这些对象的复杂操作。 而这一切都发生得很快,并且服务器实际上并没有加载。 这种速度和效率让你快速从用户到服务器,反之亦然传输大量信息。

为了实现与信息这项工作,有几种编程语言技术。 这些措施包括,例如,PL /从SQL 数据库管理系统 的Oracle,PSQL在InterBase和火鸟系统,以及经典的“maykrosoftovskih»的Transact-SQL。 所有这些都旨在创建和运行存储过程,让您在使用上的大型数据库处理自己的算法。 这是必要的,以确保那些谁进行这些信息的管理,可以保护所有的物体从未经授权的第三方,因此,创建,修改或某些数据的删除。

生产率

这些数据库对象可以以不同的方式进行编程。 这允许用户选择的过程,将是最合适的类型,从而节省时间和精力。 此外,过程本身进行处理,从而避免了用在服务器和用户之间的通信大量的时间。 该模块可以重新编程,以绝对的任何时间向正确的方向改变。 尤其值得注意的速度与该发射SQL存储过程的发生:该过程更快其他类似给它,使其成为一个方便且通用。

安全

这种类型的信息处理从在它提供增强的安全性的类似过程不同。 这是一个事实,即从程序访问其他用户可以完全消除保证。 这将允许管理员和他们独立经营,而不必担心拦截或将数据库未经授权的访问。

数据传输

存储的SQL程序和客户应用程序之间的通信是使用参数和返回值。 后者是没有必要将数据发送到存储过程,但处理的SQL的信息(主要是在用户的请求),和。 一旦存储过程已完成其工作,它采用多种方法,通过它可以实现为一个存储SQL过程和回报,例如通话将数据包发送回(但同样,如果需要的话)来调用应用程序:

- 数据传输 经由输出参数类型;

- 通过return语句数据传输;

- 通过载波选择的数据传输。

现在看这个过程是如何看起来是一样的内部。

1.创建EXEC存储在SQL过程中

您可以创建在MS SQL(枭雄工作室)的过程。 在创建过程之后,它列出了一个可编程的数据库节点,其中,所述程序是由创建的操作员执行上。 要使用EXEC-一个包含对象名称进程中执行SQL存储过程。

创建名称时是第一位的过程,然后由分配给他一个或多个参数。 参数可以是可选的。 参数(一个或多个)后,即过程的主体,要写入,有必要进行一些必要的操作。

事实上,身体可以有局部变量,位于它,而这些变量是局部的和有关的程序。 换句话说,他们只能在身体护理被认为是 微软的SQL Server。 在这种情况下,存储过程中被认为是本地的。

因此,为了创建一个过程,我们需要一个过程的名称和至少一个参数的过程体。 请注意,在这种情况下的最佳选择是在分类模式名称程序创建和实现。

程序主体可以具有任何种类的运营商的SQL,例如,如创建一个表,将所述表中的一个或多个行,在建立数据库类型和字符,等等。 尽管如此,过程体它限制某些操作。 一些最重要的限制列举如下:

- 身体不会产生任何其它存储过程;

- 身体不能创建有关对象的假象;

- 身体不会产生任何的触发器。

2.设置变量的过程的主体

你可以局部变量身体的过程,然后他们将是一个过程体中。 一个好的做法是在存储过程主体的开始创建一个变量。 但是,你也可以在对象的身体的任何地方设置的变量。

有时你可能会注意到某些变量在同一行中设置,并用逗号分隔的每个变量。 还要注意的是变量前缀@。 在此过程中的身体,你可以设置你想要的变量。 例如,一个可变@ NAME1可朝向程序本体的端部公布。 为了分配一个值到一个变量使用一组个人数据的声明。 相反,当在同一行中声明多个变量的情况,在这种情况下只使用一组个人数据。

用户经常会提出这样的问题:“如何在过程的主体分配多个值在一个语句“嗯? 有趣的问题,但是这是比你想象的要容易得多。 答案是:有这样的对的帮助下«选择无功=价值”。 您可以使用这些对,用逗号隔开。

3.创建一个SQL存储过程

在各种各样的人的例子表明创建一个简单的存储过程,并执行它。 然而,该过程可能需要这样的参数调用进程将会有接近它(但不总是)的值。 如果它们匹配,然后开始在身体内的相应流程。 例如,如果您创建一个将采取城市和地区从主叫方,并返回作者简介多少参考相应的城市和地区的数据的过程。 该程序将查询提交的数据库表,例如,酒馆,用于进行该计算的作者。 为了获得这些数据库,例如,谷歌与下载页面SQL2005的SQL脚本。

在前面的例子中,该过程需要两个参数,这在英国将被称为有条件@state和@city。 数据类型对应于应用程序中指定的类型。 过程本体具有内部变量@TotalAuthors(所有作者),该变量用于显示它们的数量。 接下来是一个部分选择请求的所有罪名。 最后,计算出的值显示在用print语句输出窗口。

如何执行SQL存储过程

有两种方法来执行的程序。 第一种方式是通过作为逗号分隔的列表在过程名后进行传递参数所示。 假设我们有两个值(如在前面的例子)。 这些值是使用的变量和@state @city程序收集。 在该方法中,发送顺序的重要参数。 这种方法被称为自变量的传输顺序。 在第二种方法中,这些参数已直接分配,在这种情况下的顺序并不重要。 第二种方法被称为命名参数的传输。

该过程可以稍微从典型偏离。 尽管如此,如上面的例子,但参数仅转向这里。 也就是说@city参数首先存储和@state旁边的默认值存储。 默认设置通常是单独分配。 SQL存储过程是简单的参数。 在这种情况下,所提供的选项的“UT“代替默认值” CA“。 在第二实施例通行证@city只有一个参数值,以及@state选项默认为“CA”。 有经验的程序员被告知,所有的默认变量位于接近参数列表的末尾。 否则,执行是不可能的,那么你有一个命名参数的更长,更复杂的转移工作。

4.存储过程的SQL Server:返回的方式

主要有三种方式来发送保存在被调用过程的数据。 他们列举如下:

- 返回值的存储过程;

- 输出参数存储过程;

- 选择一个存储过程。

4.1的SQL存储过程返回值

在此过程中,该过程将本地变量的值并将其返回。 该程序也可以直接返回一个恒定值。 在下面的例子中,我们已经创建了返回赞助商总数的过程。 如果我们比较这与之前的过程中,你可以看到打印的值是通过反向替代。

现在,让我们来看看如何执行的程序和显示值,返回它。 需要执行程序以建立与可变打印,这是该过程之后进行。 通知而不是打印操作员可以使用选择运营商,例如,选择@RetValue和OutputValue。

4.2输出参数SQL存储过程

响应值可用于返回,我们在前面的例子中所看到的单个变量。 使用输出允许程序发送一个或多个变量给主叫方。 在创建过程时,输出参数表示为时间这个关键字«输出»。 如果该参数被指定为一个输出参数,该程序对象必须给它赋值。 存储过程SQL,其实例在下面可以看到,在这种返回到最后信息的情况。

在这个例子中,将有两个周末名称:@TotalAuthors和@TotalNoContract。 它们在参数列表中指定。 这些变量在过程体中赋值。 当我们使用输出参数,调用者可以看到在过程体设置的值。

另外,在前面的情况下,两个变量的声明,以便查看安装的存储过程,MS SQL Server作为输出参数的值。 然后该程序通过将正常值«CA»参数来执行。 下面的参数是输出,因此,声明变量在规定的方式通过。 请注意,当可变输出关键字也在这里指定。 该过程成功完成后,利用输出参数返回的值被显示在消息窗口上。

4.3选择一个SQL存储过程

这种技术被用于返回在所述形式表数据值(记录集)的一组调用存储过程。 在这个例子中,SQL存储与@AuthID通过过滤此参数@AuthId返回的记录请求表“作者”参数的过程。 选择操作员决定什么应该被返回给调用存储过程。 当存储过程AUTHID发送回。 这样的过程总是只返回一个记录或根本没有。 然而,存储过程不会对多个条目返回的任何限制。 经常可以发现实施例,其中使用与所述计算出的变量参数选择了返回数据是由提供多个合计值来完成的。

总之

存储过程是一个相当严重的程序,归还或移交,以及建立必要的变量,由于客户端应用程序。 由于该存储过程是在服务器本身上执行时,可避免在服务器和客户端应用程序(对于某些计算)之间的大量的数据交换。 这使得它可以减少SQL服务器,这当然是他们的人的手的负担。 其中一个亚种的存储过程牛逼SQL,但他们的研究是需要那些参与创造一个令人印象深刻的数据库。 也有细微的差别,可以在存储过程的研究有用的大,即使数额巨大,然而,这需要对那些谁是计划做紧身节目,包括专业。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.delachieve.com. Theme powered by WordPress.