数据库的存储过程,什么是数据库的储存过程~~
数据库的存储过程,什么是数据库的储存过程~~详细介绍
本文目录一览: 数据库中的存储过程是什么
存储过程是存储在
.dbc
文件中的
Visual
FoxPro
代码,是专门操作数据库中数据的代码过程。存储过程可以提高数据库的性能,因为在打开一个数据库时,它们便加载到了内存中。
使用存储过程主要是为了创建用户自定义函数,字段级规则和记录级有效性规则将引用这些函数。当把一个用户自定义函数作为存储过程保存在数据库中时,函数的代码保存在
.dbc
文件中,并且在移动数据库时,会自动随数据库移动。使用存储过程能使应用程序更容易管理,因为可以不必在数据库文件之外管理用户自定义函数。
什么是数据库存储过程
SQL的调用可以分为函数和存储过程。
个人理解,其实函数和存储过程是相似的,至少在引用的时候跟函数很是一样。或者干脆把存储过程理解为另一种函数,另一种经过优化的函数。它的优点在于,存储过程在被编译后会被直接保存在数据库中,成为数据库的一部分,以后就可以反复调用,运行速度快,效率高,这些是函数做不到的。
存储过程(Stored
Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL
语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
种类
1系统存储过程
以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。
2本地存储过程
用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。
3临时存储过程
分为两种存储过程:
一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;
二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。
4远程存储过程
在SQL
Server2005中,远程存储过程(Remote
Stored
Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。
5扩展存储过程
扩展存储过程(Extended
Stored
Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。
SQL的调用可以分为函数和存储过程
个人理解,其实函数和存储过程是相似的,至少在引用的时候跟函数很是一样。或者干脆把存储过程理解为另一种函数,另一种经过优化的函数。它的优点在于,存储过程在被编译后会被直接保存在数据库中,成为数据库的一部分,以后就可以反复调用,运行速度快,效率高。。。这些是函数做不到的
解释不专业,就是个人的理解o(∩_∩)o
存储过程就是把单个数据,利用你编好的模块把输入的数据进行统计分析等等。
存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务规则。
存储过程是一组预编译的SQL语句,它可以包含数据操纵语句、变量、逻辑控制语句等。
存储过程分类:
1.系统存储过程:
由系统定义,存放在master数据库中
类似C语言中的系统函数
系统存储过程的名称都以“sp_”开头或”xp_”开头
2.用户自定义存储过程:
由用户在自己的数据库中创建的存储过程
类似C语言中的用户自定义函数
存储过程允许带参数,参数分为:
输入参数
输出参数
其中,输入参数可以有默认值。
输入参数:可以在调用时向存储过程传递参数,此类参数可用来向存储过程中传入值
输出参数从存储过程中返回(输出)值,后面跟随OUTPUT关键字
RAISERROR语句用来向用户报告错误
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
这类语言主要提供以下功能,让用户可以设计出符合应用需求的程序:
1、变量说明
2、ANSI(美国国家标准化组织)兼容的SQL命令(如Select,Update….)
3、一般流程控制命令(if…else…、while….)
4、内部函数
扩展资料:
种类
1、系统存储过程
2、本地存储过程
3、临时存储过程
4、远程存储过程
5、扩展存储过程
参考资料来源:百度百科-存储过程
参考资料来源:百度百科-数据库
什么是数据库的储存过程~~
存储过程就好象一个批处理文件一样,你可以在里面执行很多的SQL,来得到你最好需要的结果
但你发现一个复杂的统计在一条SQL语句中不能实现或是很难实现的时候,那最好用存储过程来实现
存储过程的执行速度更快
存储过程在服务器端早已编辑执行过的代码。用户要做的只是调用和接收存储过返回的结果。所以调用存储过程比普通的用查询语句返回值要快得多。
简单来说,存储过程就是已经编译好的一组SQL语句,调用时它执行的效率很高(因为已经编译好了)。
存储过程概述
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就
本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。SQL Server 2000 不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。
12.1.1 存储过程的概念
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
在SQL Server 的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义存储过程。系统过程主要存储在master 数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Server 提供支持。通过系统存储过程,MS SQL Server 中的许多管理性或信息性的活动(如了解数据库对象、数据库信息)都可以被顺利有效地完成。尽管这些系统存储过程被放在master 数据库中,但是仍可以在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。而且当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。在本章中所涉及到的存储过程主要是指用户自定义存储过程。
12.1.2 存储过程的优点
当利用MS SQL Server 创建一个应用程序时,Transaction-SQL 是一种主要的编程语言。若运用Transaction-SQL 来进行编程,有两种方法。其一是,在本地存储Transaction- SQL 程序,并创建应用程序向SQL Server 发送命令来对结果进行处理。其二是,可以把部分用Transaction-SQL 编写的程序作为存储过程存储在SQL Server 中,并创建应用程序来调用存储过程,对数据结果进行处理存储过程能够通过接收参数向调用者返回结果集,结果集的格式由调用者确定;返回状态值给调用者,指明调用是成功或是失败;包括针对数据库的操作语句,并且可以在一个存储过程中调用另一存储过程。
我们通常更偏爱于使用第二种方法,即在SQL Server 中使用存储过程而不是在客户计算机上调用Transaction-SQL 编写的一段程序,原因在于存储过程具有以下优点:
(1) 存储过程允许标准组件式编程
存储过程在被创建以后可以在程序中被多次调用,而不必重新编写该存储过程的SQL 语句。而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代码毫无影响(因为应用程序源代码只包含存储过程的调用语句),从而极大地提高了程序的可移植性。
(2) 存储过程能够实现较快的执行速度
如果某一操作包含大量的Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的执行计划。而批处理的Transaction- SQL 语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。
(3) 存储过程能够减少网络流量
对于同一个针对数据数据库对象的操作(如查询、修改),如果这一操作所涉及到的 Transaction-SQL 语句被组织成一存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,否则将是多条SQL 语句,从而大大增加了网络流量,降低网络负载。
(4) 存储过程可被作为一种安全机制来充分利用
系统管理员通过对执行某一存储过程的权限进行限制,从而能够实现对相应的数据访问权限的限制,避免非授权用户对数据的访问,保证数据的安全。(我们将在14 章“SQLServer 的用户和安全性管理”中对存储过程的这一应用作更为清晰的介绍)
注意:存储过程虽然既有参数又有返回值,但是它与函数不同。存储过程的返回值只是指明执行是否成功,并且它不能像函数那样被直接调用,也就是在调用存储过程时,在存储过程名字前一定要有EXEC保留字
什么是mysql存储过程
MySQL中的存储过程指的是存储在数据库中的SQL语句集合,当创建好存储过程后在运行时提供所需参数,存储过程就可以以代码指定的方式使用参数执行并返回值在MySQL中提供了创建存储过程的能力。存储过程是MySQL以及其他数据库管理系统中的强大功能。接下来在文章中将为大家具体介绍MySQL中的存储过程,具有一定的参考作用,希望对大家有所帮助。【推荐课程:MySQL教程】存储过程:存储过程指的是存储在数据库中的SQL语句的集合。存储过程它可以包含业务逻辑,这是区分存储过程和视图的关键之一。另外存储过程还可以接受参数,我们可以在存储过程中设置变量,写入语句等。存储过程如何工作首先要先创建一个存储过程然后再运行。在运行的过程中需要提供它所需要的参数,然后存储过程将以代码指定的任何方式使用参数执行。例如,编写一个接受FruitId参数的存储过程。然后在存储过程可以获取该参数并使用它来检查该特定水果的库存。因此我们可以调用存储过程,即每次使用不同的水果ID它都将返回一个值,并显示该库存中有多少水果。创建存储过程我们可以通过CREATE PROCEDURE语句创建存储过程CREATE PROCEDURE demo_name(p_1 INT)BEGIN ...code goes here...END;demo_name指的是存储过程的名称,括号是必须的,如果里面不包含任何参数则括号可以为空存储过程的主体是介于BEGIN和END关键字之间。这些关键字用于编写复合语句。复合语句可以包含多个语句,如果需要,可以嵌套这些语句。例:创建一个存储过程名为FruitStock:DELIMITER //CREATE PROCEDURE FruitStock(thisFruit SMALLINT)BEGIN SELECT Fruit.FruitName, Fruit.Inventory, Units.UnitName FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId WHERE Fruit.FruitId = thisFruit;END //DELIMITER ;创建好了一个存储过程,接下来将调用这个存储过程调用一个参数为1的IDCALL FruitStock(1);删除存储过程可以使用DROP PROCEDURE语句删除存储过程。DROP PROCEDURE FruitStock;改变存储过程在存储过程中可通过下列语句更改存储过程ALTER PROCEDURE。需要注意要更改存储过程的主体或其任何参数时,需要删除该过程然后再次创建例:添加Fruit.FruitId所要返回的列表DROP PROCEDURE IF EXISTS FruitStock;DELIMITER //CREATE PROCEDURE FruitStock(thisFruit SMALLINT)BEGIN SELECT Fruit.FruitId, Fruit.FruitName, Fruit.Inventory, Units.UnitName FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId WHERE Fruit.FruitId = thisFruit;END //DELIMITER ;总结:
mysql存储过程是什么样
相关免费学习:mysql数据库(视频)mysql存储过程是:1、什么是存储过程存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。2、创建存储过程格式:DELIMITER $$CREATE PROCEDURE `ProcedureName`(paramName paramType)BEGINEND$$DELIMITER ;红色字体解释:ProcedureName:你要创建的存储过程名称paramName:参数名称paramType:参数类型注:(1) 存储过程是否需要参数根据实际情况而定(括号内容可不填);(2) MySQL从5.0开始支持存储过程;(3) DELIMITER 和 DELIMITER ; 是分隔符的意思,它们的作用就是让编译器知道它们里面的内容是存储过程的,如果不写这两部分,则编译器会将这段代码当作普通的SQL执行;(4) BEGIN 和 END 之间就是存储过程的内容,我们的SQL都是在这中间编写;3、存储过程的优缺点(1) 执行速度快。由于存储过程已经预编译了,使用的时候直接跳过编译部分,所以执行速度会变快;(2) 减少网络流量。使用存储过程的时候只需要调用存储过程的方法即可,相对于SQL语句存储过程的方法名更短,网络传输调用存储过程的语句,减少了网络流量;(3) 复用性。一次创建,满足需求的情况下可以随便使用;
数据库存储过程是什么
问题一:sql数据库中的存储过程该怎么理解 有什么用啊? 存储过程是SQL 语句和流程控制语句的预编译 *** ,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
问题二:数据库中什么是存储过程?作用是什么? 存储过程,就是带有名字的一个程序块。
存储,是指这个程序块创建了之后,是存储在数据库内部的,然后我们可以在自己写的程序中通过某种手段去调用这段程序,然后这段程序就会做一件事,做什么事?我们定义存储过程的时候怎么写的,它到时候就做什么;
过程,就是程序块,说白了就是一段程序。
存储过程,创建完成之后,就存储在数据库内部了,数据库帮你记着,存储过程创建的时候都有一个名字,将来你在你的程序当中,通过某种方式(不同编程语言有不同的方式),一般来讲通过这个名字,去调用存储过程,就像使用一个方法或者函数一样,它就去做一件事!
不同的数据库的存储过程,都是用当前自己这个数据库的编程语言来编写的,比如Oracle的PL/SQL编程,等等。
自己写一个就明白了,语法不用我多说了吧?
问题三:什么叫作数据库的存储过程? 存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还可以根据条件执行不同SQL语句, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。 存储过程的优点 1.存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。可以极大的提高数据库的使用效率,减少程序的执行时间,这一点在较大数据量的数据库的操作中是非常重要的。在代码上看,SQL语句和程序代码语句的分离,可以提高程序代码的可读性。 3.存储过程可以设置参数,可以根据传入参数的不同重复使用同一个存储过程,从而高效的提高代码的优化率和可读性。 4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权存储过程的种类: (1)系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如 sp_help就是取得指定对象的相关信息。 (2)扩展存储过程 以XP_开头,用来调用操作系统提供的功能exec master..xp_cmdshell 'ping 10.8.16.1' (3)用户自定义的存储过程,这是我们所指的存储过程常用格式 模版:Create procedure procedue_name [@parameter data_type][output][with]{repile|encryption} as sql_statement 解释:output:表示此参数是可传回的 with {repile|encryption} repile:表示每次执行此存储过程时都重新编译一次;encryption:所创建的存储过程的内容会被加密。
问题四:数据库中存储过程有什么主要作用,或都说它的主要用途? 存储过程的概念
存储过程(Stored Procedure)是一组预先编绎好的Transact-SQL语句。将其放在服务器上,由用户通过指定存储过程的名字来执行它。存储过程可以作为一个独立的数据库对象,也可以作为一个单元被用户的应用程序调用。存储过程可以接收和输出参数,返回执行存储过程的状态值,还可以嵌套调用。
存储过程同其他编程语言中的过程(Procedure)类似,主要体现在以下几个方面:
(1)存储过程可以接收参数,并以接收参数的形式返回多个参数给调用存储过程和批处理。
(2)包含执行数据库操作的编程语句,也可以调用其他的存储过程。
(3)向调用过程或批处理返回状态值,以反映存储过程的执行情况。
注意:存储过程跟函数不同,存储过程不能在被调用的位置上返回数据,也不能被应用在语句当中,例如不可以用类似“@Proc=存储过程名”的方式使用存储过程。但是,存储过程可以使用变量的形式来返回参数。
存储过程的优点表现在以下几个方面:
(1)执行速度快
存储过程在创建时就经过了语法检查和性能优化,因此在执行时不必再重复这些步骤。存储过程在第一次调用后,就驻留在内存中,不必再经过编译和优化,所以执行速度很快。在有大量批处理的Transact-SQL语句要重复执行的时候,使用存储过程可以极大地提高运行效率。
(2)模块化程序设计
只需创建存储过程一次,并将其存储在数据库中,可以在程序中多次调用该存储过程。用户可以独立于应用程序而对存储过程进行修改。
(3)减少网络通信量
存储过程中可以包含大量的Transact-SQL语句。在进行调用时,只需要使用一条语句就可以实现,而不需要在网络中发送数百行代码。
(4)保证系统的安全性
可以设置用户通过存储过程来对某些关键数据进行访问,但不允许用户直接使用Transact-SQL语句或企业管理器来对数据进行访问。
问题五:数据库存储过程和函数的区别 函数分两种,表值函数跟标量函数
表值函数最后要返回一个表变量,而标量函数最后要返回一个标量值
存储过程即一组批处理,可以返回或不返回值,仅仅是执行其内部的全部语句
函数可以与一般sql语句一同编写,而存储过程不可以,需要单独执行
问题六:数据库编辑存储过程是什么意思 一般来说,程序员都希望编写出来的程序能有最大化的应变能力,存储过程的最大作用是可以降低代码维护的工作量,很多需求的变化不用修改代码进而发布程序,而只需要调整一下存储过程即可实现
例如你打算开发一个报表,该报表会对数据库的数据进行一定程度的加工,然后再呈现给用户,那么你的实现方法有两个
1. 使用代码调用SQL,取到基础数据后,在程序代盯里面进行加工,并呈现给用户
2. 也可以编写一段存储过程,该存储过程先取基础数据,然后在存储过程里面进行数据加工,最后把最终的结果一次性的反馈给程序代码,程序代码只需要把执行完存储过程的结果呈现给用户即可
这两个方法都可以实现你想实现的功能,但是如果万一有一天需求变化了,用户需要呈现的结果中增加或者减少了部分内容,那么第一个方法就只能修改代码了,而第二个方法只需要调整存储过程即可实现
问题七:在SQL中存储过程的一般语法是什么? sql server存储过程语法
存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
定义总是很抽象。存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。如果我们通过创建存储过程以及在ASP中调用存储过程,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个:
第一、大大提高效率。存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。
第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
在ASP中,一般通过mand对象调用存储过程,根据不同情况,本文也介绍其它调用方法。为了方便说明,根据存储过程的输入输出,作以下简单分类:
1. 只返回单一记录集的存储过程
假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明):
/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
begin
select * from dbo.[userinfo]
end
go
以上存储过程取得userinfo表中的所有记录,返回一个记录集。通过mand对象调用该存储过程的ASP代码如下:
'**通过mand对象调用存储过程**
DIM Mym,MyRst
Set Mym = Server.CreateObject(ADODB.mand)
Mym.ActiveConnection = MyConStr 'MyConStr是数据库连接字串
Mym.mandText = getUserList '指定存储过程名
Mym.mandType = 4 '表明这是一个存储过程
Mym.Prepared = true '要求将SQL命令先行编译
Set MyRst = Mym.Execute
Set Mym = Nothing
存储哗程取得的记录集赋给MyRst,接下来,可以对MyRst进行操作。
在以上代码中,mandType属性表明请求的类型,取值及说明如下:
-1 表明mandText参数的类型无法确定
1 表明mandText是一般的命令类型
2 表明mandText参数是一个存在的表名称
4 表明mandText参数是一个存储过程的名称
还可以通过Connection对象或Recordset对象调用存储过程,方法分别如下:
'**通过Connection对象调用存储过程**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject(&qu......>>
问题八:T-SQL和存储过程有什么区别 20分 区别T-SQL是语言,存储过程是数据库一种对象
T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。
? 存储过程的概念
存储过程Procedure是一组为了完成特定功能的SQL语句 *** ,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。
问题九:数据库存储过程怎么调用存储过程 在存储过程里用exec执行另一存储过程名及它需要的参数就可以了
如 exec abc '1', '2' (abc 是存储过程的名字, '1','2' 是它的参数)
数据库存储过程怎么编写
右键存储过程,新建一个存储过程,代码如下,
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DIY_存储过程名]
AS
BEGIN
SET NOCOUNT ON; --不记录影响的行数
END
GO
上面是SQL给我们的模板,我们修改模板如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DIY_存储过程名]
@UserID int --输入函数
AS
BEGIN
SET NOCOUNT ON; --不记录影响的行数
select '@UserName' = UserName from Users where UserID = @UserID --执行操作
END
GO
在查询分析器中调用如下:
Exec DIY_存储过程名 @UserID = 'cj0001'
这是最基本的,然后你再学习用output返回一个值,或返回一个数据集
再学习事务,再学习自定义函数,跟存储过程一样容易
我用了两天时间学会了,入门很容易,现在基本上复杂点的都写存储过程,
SQL Server的语法:
create procedure proc_name
(@para1 int)
as
sql-statement;
Mysql的语法:
create procedure proc_name
(para1 int)
sql-statement;
上面的para1是参数,如果不需要可以省略括号里的内容
sql-statement是你存储过程要执行的语句,
如果还有什么疑问可以说出来
存储过程代码参考如下:
create or replace procedure bak_pay_list_xxx(local_net in varchar2,bak_month in varchar2,ret out varchar2)
is
ls_sql varchar2(1024);
ls_sql_del varchar2(1024);
begin
...
end bak_pay_list_xxx;
右键存储过程,新建一个存储过程,代码如下,
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DIY_存储过程名]
AS
BEGIN
SET NOCOUNT ON; --不记录影响的行数
END
GO
上面是SQL给我们的模板,我们修改模板如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DIY_存储过程名]
@UserID int --输入函数
AS
BEGIN
SET NOCOUNT ON; --不记录影响的行数
select '@UserName' = UserName from Users where UserID = @UserID --执行操作
END
GO
在查询分析器中调用如下:
Exec DIY_存储过程名 @UserID = 'cj0001'
这是最基本的,然后你再学习用output返回一个值,或返回一个数据集
再学习事务,再学习自定义函数,跟存储过程一样容易
我用了两天时间学会了,入门很容易,现在基本上复杂点的都写存储过程,
SQL Server的语法:
create procedure proc_name
(@para1 int)
as
sql-statement;
Mysql的语法:
create procedure proc_name
(para1 int)
sql-statement;
上面的para1是参数,如果不需要可以省略括号里的内容
sql-statement是你存储过程要执行的语句,
如果还有什么疑问可以说出来
第一步:点击数据库下的“可编程性”,选择“存储过程”,点击鼠标右键,选择“新建存储过程”
第二步:在create PROCEDURE 后 输入存储过程的名字,紧跟着的就是定义存储过程的参数,接下来就可以去编写自己所需要组装的存储过程语句了
第三步: 编译存储过程,在工具栏上按下执行按钮,如果没有错误,就编写成功了。
第四步:调用:在sqlserver的语句查询框中,输入exec 存储过程名 参数,执行就可以了。
基本语法格式如下:中括号带的是可选项
create proc | procedure pro_name
[{@参数数据类型} [=默认值] [output],
{@参数数据类型} [=默认值] [output],
....
]
as
begin
SQL_statements
--业务处理
end
数据库中的存储过程怎么用 啊!!求解.....
关键字:procedure
例子:
SQL>
create
[or
replace]
procedure
procedure_name
is
begin
--开始执行
insert
into
test('10001','Visket');
end;
/
以上操作就能为test表添加一条信息
执行存储过程procedure用的命令是exec
记住存储过程中,语句结尾一定要有分号
存储过程分为四类;系统存储过程、用户定义存储过程、临时存储过程(以“#”或“##”为前缀)、扩展存储过程。
常用的系统存储过程的使用:
(1)sp_helpdb
用于查看数据库名称和大小。
(2)sp_helptext
用于显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。
(3)sp_renamedb
用于重命名数据库。
(4)sp_rename
用于更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
(5)sp_helplogins
查看所有数据库用户登录信息。
(6)sp_helpsrvrolemember
用于以查看所有数据库用户所属的角色信息。
就列这些常用的了,其他你自己慢慢找资料看看。
SQL中存储过程是干什么用的?
存储过程存储在数据库中,一次编译后永久有效,用户通过调用来执行功能。
存储过程是为大型数据库系统中,提供特定函数存储在数据库中的一组SQL语句,它在编译后永久有效。用户可以通过指定存储过程的名称并给出参数(如果存储过程有参数)来执行它。存储过程是数据库中的一个重要对象。
存储过程这类语言主要提供以下功能,让用户可以设计出符合应用需求的程序:变量说明;ANSI(美国国家标准化组织)兼容的SQL命令(如Select,Update等);一般流程控制命令(if…else…、while….);内部函数。
扩展资料:
使用存储过程的原因:
1、处理复杂的业务逻辑。
2、减少客户/服务器间的通信量(将复杂的应用逻辑交给服务器)。
3、增加安全性。
4、规划查询,允许模块化程序设计。
5、存储过程可以明显减少系统并行查询能力(系统不能同时进行多个设计存储过程的查询,但可以并行执行各自的SQL语句)。
参考资料来源:百度百科-存储过程
使用存储过程的原因
1. 处理复杂的业务逻辑;
2. 减少客户/服务器间的通信量(将复杂的应用逻辑交给服务器);
3. 增加安全性;
4. 规划查询,允许模块化程序设计
5. 存储过程可以明显减少系统并行查询能力(系统不能同时进行多个设计存储过程的查询,但可以并行执行各自的SQL语句)
6. 接受输入参数并以输出参数的形式将多个值返回调用过程或批处理。
存储过程的特点
1. 仅允许间接存储数据;
2. 封装着公用的算法和事务;
3. 它被存储在系统表中;
4. 仅在该过程第一次被执行时进行编译;
5. 可接收输入参数;
6. 可调用其它存储过程;
7. 可返回状态值;
8. 可返回输出参数或结果集。
存储过程的设计约束
Create Procedure定义本身可包括除下列create语句外任何数量和类型的SQL语句,存储过程的任意地方都不能使用下列语句。
Create Trigger//建立触发器
Create view//建立视图
Create procedure//建立存储过程
创建存储过程实例
创建一个向表tb_employeeinfo中插入数据的存储过程p_employeeinsert:
Create or Replace Procedure p_employeeinsert(
arg_employeeid tb_employeeinfo.employeeid%TYPE,
agr_name tb_employeeinfo.nam%TYPE,
agr_sex tb_employeeinfo.sex%TYPE,
arg_education tb_employeeinfo.education%TYPE,
arg_address tb_employeeinfo.address%TYPE )
begin
insert into tb_employeeinfo(
employeeid,
name,
sex,
education,
address)
values(
arg_employeeid,
agr_name,
agr_sex,
arg_education,
arg_address);
end p_employeeinsert;
sql存储过程说简单点就是一个在t-sql下用户可以自行定义的函数,
但是与一般的函数也有不同的地方,比如它的返回值只能RETURN(INT类型),如果你要输出什么信息的话只能用OUTPUT.这也是存储过程的一个特色吧,设定的参数可以有输出。讲起来有点抽象,给你个例子看看吧!
首先创建一个存储过程
CREATE PROCEDURE cunchuguocheng
@a int,
@b int,
@c int output
as
begin
select @c = @a @b
return(0)
end
然后调用这个存储过程
declare @value int, --返回值
@c int --结果值
exec @value = cunchuguocheng 2,2,@c output
select @value as 返回值
select @c as 结果值
程序写的很简单,你运行一下我想你就会对存储过程有所了解了。
所有设计优良的 Microsoft? SQL Server? 2000 应用程序都应当使用存储过程。不论是否将应用程序的业务逻辑写入存储过程都应如此。甚至连没有业务逻辑组件的标准 Transact-SQL 语句,在用参数打包成存储过程后也能获得性能收益。编译进存储过程的 Transact-SQL 语句在执行时可省去大量的处理。
存储过程的另一个优点是客户端执行请求使用网络的效率比将等效的 Transact-SQL 语句发送到服务器高。例如,假设应用程序需要将一个大的二进制值插入 image 数据列。为使用 INSERT 语句发送数据,该应用程序必须将该二进制值转换为字符串(其大小翻倍),然后发送到服务器。服务器再将该值转换回二进制格式以存储在 image 列中。
相反,应用程序可以创建下列格式的存储过程:
CREATE PROCEDURE P(@p1 image) AS INSERT T VALUES (@p1)
当客户端应用程序请求执行过程 P 时,image 参数值将一直以二进制格式发送到服务器,从而节省处理时间并减少网络流量。
如果 SQL Server 存储过程中包含业务服务逻辑,因为业务服务逻辑将处理移动到数据,而不是将数据移动到处理,因而存储过程能提供更大的性能收益。
存储过程的优点
(1)存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。
(2) 可保证数据的安全性和完整性。
● 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
● 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
(3) 再运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。 由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。
(4)可以降低网络的通信量。
(5) 使体现企业规则的运算程序放入数据库服务器中,以便:
● 集中控制。
● 当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的 运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。
1.使用企业管理器创建用户存储过程
操作步骤如下:
(1)启动SQL Server企业管理器。
(2)在“控制台根目录”窗口,展开“SQL Server组”,首先,选择“数据库”,然后,选择“存储过程”,单击鼠标右键,打开快捷菜单。
(3)在打开快捷菜单中,选择“新建存储过程”菜单命令,进入“存储过程属性”窗口。
(4)在“存储过程属性”窗口,在文本框中输入存储过程代码,单击“确定”,结束存储过程的创建。
2.使用T-SQL语句创建用户存储过程
SQL命令格式:
CREATE PROC [ EDURE ]
[ ; Number ]
[ { @parameter Data_type }
[ VARYING ] [ = Default ] [ OUTPUT ] ] [ ,...n ]
[ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }]
[ FOR REPLICATION ]
AS sql_statements
功能:创建一个用户存储过程,并保存在数据库中。
二楼的小白真是误导人,楼主说的是存储过程,不是事务。
存储过程也没什么特别的,就是已编译的sql语句集,减少资源浪费而已。
可以看下SQL 联机丛书或msdn的详细解释。
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
扩展资料:
SQL中存储过程优点:
1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
4、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
参考资料来源:百度百科-存储过程