1.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4.当存储过程和函数被执行的时候,sql Manager会到procere cache中去取相应的查询语句,如果在procere cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。
B. mysql中函数和存储过程的区别
存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
存储过程和函数存在以下几个区别:
1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。
2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。
3)存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。
4)存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。
C. 数据库存储过程是什么
问题一: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 procere procee_name [@parameter data_type][output][with]{repile|encryption} as sql_statement 解释:output:表示此参数是可传回的 with {repile|encryption} repile:表示每次执行此存储过程时都重新编译一次;encryption:所创建的存储过程的内容会被加密。
问题四:数据库中存储过程有什么主要作用,或都说它的主要用途? 存储过程的概念
存储过程(Stored Procere)是一组预先编绎好的Transact-SQL语句。将其放在服务器上,由用户通过指定存储过程的名字来执行它。存储过程可以作为一个独立的数据库对象,也可以作为一个单元被用户的应用程序调用。存储过程可以接收和输出参数,返回执行存储过程的状态值,还可以嵌套调用。
存储过程同其他编程语言中的过程(Procere)类似,主要体现在以下几个方面:
(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语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。
? 存储过程的概念
存储过程Procere是一组为了完成特定功能的SQL语句 *** ,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。
问题九:数据库存储过程怎么调用存储过程 在存储过程里用exec执行另一存储过程名及它需要的参数就可以了
如 exec abc '1', '2' (abc 是存储过程的名字, '1','2' 是它的参数)
D. mysql中的函数和存储过程的区别
存储过程与函数的区别
本质上没区别,执行的本质都一样。
只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。
函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程要让sql的query 可以执行, 需要把 mysql_real_connect 的最后一个参数设置为CLIENT_MULTI_STATEMENTS。
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少。
特性区别如下:
1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。
2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。
3)存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。
4)存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。
当存储过程和函数被执行的时候,SQL Manager会到procere cache中去取相应的查询语句,如果在procere cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。
Procere cache中保存的是执行计划 (execution plan) ,当编译好之后就执行procere cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。
MYSql存储过程的作用及语法
作用:
1、使用存过过程,很多相似性的删除,更新,新增等操作就变得轻松了,并且以后也便于管理!
2、存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
3、存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
4、存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
5、存储过程主要是在服务器上运行,减少对客户机的压力。
6、存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
7、存储过程可以在单个存储过程中执行一系列SQL语句。
8、存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
一、创建存储过程
create procere sp_name()
begin
.........
end12341234
二、调用存储过程
call sp_name()11
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
三、删除存储过程
drop procere sp_name//11
注意:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四、区块,条件,循环
1、区块定义,常用
begin
......
end;123123
也可以给区块起别名,如:
lable:begin
...........
end lable;123123
可以用leave lable;跳出区块,执行区块以后的代码
2、条件语句
if 条件 then
statement
else
statement
end if;1234512345
3、循环语句
(1)while循环
[label:] WHILE expression DO
statements
END WHILE [label] ;1234512345
(2)、loop循环
[label:] LOOP
statements
END LOOP [label];1234512345
(3)、repeat until循环
[label:] REPEAT
statements
UNTIL expression
END REPEAT [label] ;12345671234567
五、其他常用命令
1.show procere status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procere sp_name
显示某一个存储过程的详细信息
函数function示例
CREATE DEFINER=`root`@`%` FUNCTION `spr_checkadmin`(acckey varchar(32), accpwd varchar(64)) RETURNS int(11)
BEGIN
DECLARE x INT;
SELECT COUNT(*) INTO x FROM admins WHERE account=acckey AND passwd=accpwd;
RETURN(x);
END;123456123456
单个返回值的存储过程
CREATE DEFINER=`root`@`%` PROCEDURE `spr_getuserstorage`(tok varchar(128))
BEGIN
DECLARE acc VARCHAR(32);
DECLARE pkgid VARCHAR(32);
DECLARE regdate DATETIME;
DECLARE logindate DATETIME;
DECLARE sumsize BIGINT;
SELECT account INTO acc FROM userinfo WHERE token=tok;
IF (acc != NULL) THEN
SELECT SUM(filesize) INTO sumsize FROM userfiles WHERE account=acc;
SELECT packageid, registerdate, lastlogindate INTO pkgid, regdate, logindate FROM userinfo WHERE account=acc;
SELECT 0,pkgid,regdate,logindate;
ELSE
SELECT(-1);
END IF;
多个返回值存储过程
CREATE DEFINER=`root`@`%` PROCEDURE `spr_queryfolderallfile`(sToken varchar(32), OUT sfid varchar(32), OUT sfext varchar(32))
BEGIN
DECLARE acc CHAR(32);
SELECT account INTO acc FROM userinfo WHERE token=sToken;
IF (acc != NULL) THEN
SELECT fileid, fileext INTO sfid, sfext FROM userfiles WHERE account=acc AND filetype=1;
END IF;
END;1234567812345678
E. 数据库中存储过程和函数的区别是什么用自己的话回答。
存储过程:可以进行增删查改dml操作,甚至可以进行建表等ddl操作;不能return返回值,可以用out参数返回值。用exec 过程名 的方法调用。
函数,可以return返回值;一般来说,只能进行select操作,不能进行增删改,也不能进行ddl操作。可以通过赋值的方式调用,也可以在sql语句中使用。
F. 存储过程和函数的区别
一、含义不同
1、存储过程:存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。
2、函数:是由一个或多个 SQL 语句组成的子程序,可用于封装代码以便重新使用。函数限制比较多,如不能用临时表,只能用表变量等
二、使用条件不同
1、存储过程:可以在单个存储过程中执行一系列 SQL 语句。而且可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
2、函数:自定义函数诸多限制,有许多语句不能使用,许多功能不能实现。函数可以直接引用返回值,用表变量返回记录集。但是,用户定义函数不能用于执行一组修改全局数据库状态的操作。
三、执行方式不同
1、存储过程:存储过程可以返回参数,如记录集,函数只能返回值或者表对象。存储过程的参数有in,out,inout三种,存储过程声明时不需要返回类型。
2、函数:函数参数只有in,而函数需要描述返回类型,且函数中必须包含一个有效的return语句。
G. 数据库存储过程、函数、触发器的区别是什么
三者差别:
1、存储过程实现的功能要复杂一点,而函数实现的功能针对性比较强。;
2、存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用;
3、触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。
分别含义:
1、存储过程的特点
①存储过程只在创建时进行编译,以后执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
② 当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来。
③可以在过程中调用另一个存储过程。可以在存储过程中调用函数。这可以简化一系列复杂语句。
④ 安全性高,可设定只有某用户才具有对指定存储过程的使用权。
⑤参数有三种(IN、OUT、IN OUT),可返回多个参数值。
⑥在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
⑦存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
2、函数的特点
①函数只有一种参数(IN),只有一条RETURN语句,只能返回单一的值。
②可在SQL语句(DML或SELECT)中调用函数。由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
3、触发器的特点
触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。
H. sql数据库的存储过程的函数问题
1)自定义函数中不能调用存储过程,如果调用了,函数可以顺利创建,但是调用函数会出错
2)自定义函数中不能创建表,删除表,插入表数据
解决办法:
可以先把存储过程返回的结果插入到临时表,然后在函数里调用临时表,或者运用内置函数,或者使用复杂的联合查询实现想要的结果
I. oracle函数和存储过程有什么区别
一、主体不同
1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。
2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。
二、特点不同
1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。
2、存储过程:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
三、功能不同
1、函数:不能用临时表,只能用表变量,函数不能执行一组修改全局数据库状态的操作。可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面。
2、存储过程:存储过程需要让sql的query可以执行,存储过程可以返回参数,如记录集。sql语句中不可以含有存储过程。
J. 数据库中存储过程和函数有什么区别
函数分两种,表值函数跟标量函数
表值函数最后要返回一个表变量,而标量函数最后要返回一个标量值
存储过程即一组批处理,可以返回或不返回值,仅仅是执行其内部的全部语句
函数可以与一般sql语句一同编写,而存储过程不可以,需要单独执行