数据库中的存储过程怎么用 啊!!求解.....

数据库中的存储过程怎么用 啊!!求解.....,第1张

关键字:procedure

例子:

SQL>

create

[or

replace]

procedure

procedure_name

is

begin

--开始执行

insert

into

test('10001','Visket');

end;

/

以上 *** 作就能为test表添加一条信息

执行存储过程procedure用的命令是exec

记住存储过程中,语句结尾一定要有分号

存储过程可以使得程序执行效率更高、安全性更好。

存储过程建立之后就已经编译并且储存到数据库,直接写sql就需要先分析再执行因此存储过程效率更高,直接写sql语句会带来安全性问题,如:SQL注入。

建立存储过程不会很耗系统资源,因为存储过程只是在调用才执行。

存储过程还可以使程序和SQL分离,维护起来也会更方便。

create or replace procedure test(in in_where varchar(100)) --创建一个存储过程test,并可以传入字符串作为参数

declare v_sql varchar(512);

set v_sql = ' delete from table1 where field1 in (' concat in_where concat ') ' ; -- 这里是把传进来的where语句拼起来

execute immediate v_sql; --这里是把语句进行执行---------类似以上这样的存储过程,使用以下的放在进行执行即可:call test( ' ''001'',''002'' ') ; --内容中的一个‘ 需要使用 ’‘ 进行转义

可以通过drop语句进行实现。\x0d\sql:drop procedure procedurename;\x0d\解释:上面的sql语句的意思就是删除出存储过程名为procedurename的存储过程。\x0d\备注:drop(删除)的通常是对象,如表(table)、视图(view),功能(function)等。

数据库中执行存储过程text的命令不同数据库执行方法也不同,以sql

server为例来说明:

创建名为GetUserAccount的存储过程

create

Procedure

GetUserAccountRe1

@UserName

nchar(20),

@UserID

int

output

as

if(@UserName>5)

select

@UserID=COUNT()

from

UserAccount

where

UserID>25

else

set

@UserID=1000

return

@@rowcount

go

执行方法:

exec

GetUserAccountRe1

'7',null

返回结果:

@userID为COOUT()即

=1,Retun

Value=1。

存储过程是在数据库里面的,这样是为了提高数据库查询的效率,没有放到程序里的事。至于你说的

“放在数据库那边的话,整个程序对数据库的依赖性就很强了同时使得程序的移植性降低了”这是不成立的。在web开发中本来就是读取服务器的数据库,何来移植性之类的。如果是form应用程序的话,你如果用到数据库就必须依赖与数据库了,本身就依赖于数据库了,数据库可以说成了程序的一部分,用不用存储过程是不会影响依赖性和移植的。这点你慢慢的就会明白

以上就是关于数据库中的存储过程怎么用 啊!!求解.....全部的内容,包括:数据库中的存储过程怎么用 啊!!求解.....、存储过程写在数据库中和程序里有什么区别、如何给DB2数据库的存储过程中 where 的in 条件传参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9804155.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存