当前位置:首页 » 存储配置 » 存储过程入门

存储过程入门

发布时间: 2023-03-17 15:09:51

Ⅰ 请问什么是存储过程,存储过程作用是什么,什么情况下才用存储过程如何用sql调用存储过程

sql语句执行的时候要先编译,然后执行。存储过程(Stored Procere)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程.
这是一个基础教程你看看http://www.aspxuexi.com/asp/sp/2007-11-20/2990.htm

Ⅱ 零基础如何自学使用MySQL数据库

对于非计算机出身的我,大学只会hello word和跑马灯,期间过程确实非常曲折,分享下我的自学过程:

1、 自己在windows和linux上安装了mysql,自学linux的基础知识,学习mysql的最基础的知识,即怎么写sql,存储过程,表的设计等,从0到熟悉大概花了3个月 ,推荐《mysql入门很简单》。

2、系统地较为深入地学习mysql的sql优化,备份和恢复,参数优化,架构优化,硬件层面的优化,高可用方案,复制技术等等,这段时间你不一定能实际接触到这些,就像我当初那样,肯定没什么公司招一个小白。 我选择自己看书,推荐《高性能mysql》,里面所有的章节都需要看一遍,以现在的水平肯定看不懂,但需要知道大概怎么回事,为后续的找mysql初级dba的工作打一个铺垫,这个过程大概也需要3个月。

3、 纸上得来终觉浅,完成以上两步,我开始准备找一份mysql相关的工作,而不是天天用着excel表格做着select * from table_sb这样的工作。 当然我这么猥琐的人肯定不会裸辞,该画的电路板也一样画,业余时间开始投初级mysql dba的工作,并且不间断地学习,网上各种找mysql面试的相关题目(实际上我当时完全没有任何实战经验),陆续收到一些面试,凭借之前自学的mysql知识,开始胡乱吹牛逼,先混进去再说。 你不做mysql实际相关的工作,永远也不知道自己之前认知的db知识有多幼稚。 友情提示一点,一般公司都没有专职dba的,所以面试的时候一定要自信,其实你学了这么多,虽然毫无实战经验,理论知识很大概率比面试你的人牛逼,所以各种吹,我就这样真正进入初级dba的圈子(由于这时对linux还处于cd ls的水平,所以之前也根本没做过运维),这个边工作边找工作的过程又持续了2个月。

4、真正进入互联网,接触生产环境后,这是我进步最大的时候。 第一步需要将之前所学真正地应用起来,并且应用的过程中,再回头看之前的书籍,这时候需要真正去理解,而不是似是而非,一知半解。 这时再推荐《高性能mysql 第三版》,全本再看一遍,这时需要全部看懂,另外还有《mysql技术内幕:innodb存储引擎》等等。 总之这段时间就需要开始关注mysql一些细节了,比如db故障处理,高可用,负载均衡等等的具体实现了。 另外,linux的知识同步也要深入去学习,至少会写shell脚本,常见的linux知识等,我在这花了1年多;

5、 dba的工作一般是非常轻闲的,毕竟不是大公司,技术能力有限,该学的也学得差不多了,接触不到海量数据,高并发等比较锻炼人的场合,于是我又准备跳了。 于是来了公有云,现在每天运维万多个db实例,平均每天处理5+个紧急db故障,几乎mysql会遇到的问题,感觉都遇到了,能感觉到技术实力和经验也在每天都在积累,在进步。 但是感觉还是欠缺了很多,下一步就看你选择了,是再去研究源代码,底层原理的东西多点,还是数据库运维和应用多一点,就比如业界姜承尧,何登成与叶金荣的区别。 由于我的历史原因,对c++等几乎不懂,平时也用不到,所以看代码等事实际太累,于是我再去学mongodb,接了公司mongodb运维的活,算是在广度上的一个扩展,万一哪天mysql不行了呢

6、 总之,对于db小白来说,最重要的一点就是,学习的过程不能断。 PS 上面的方法比较野路子,适合没什么基础的童鞋,如果本来就是DBA,比如从oracle转到mysql,那么建议直接看mysql官方文档,而官方文档是db达到一定水平后必看,出问题时必查的权威文档。

Ⅲ Navicat创建带参数的存储过程+调用

你打开"new query",然后直接在新的窗口里编写就可以了,给衡坦你个示例:

create procere p_test
(
in i_num int,
in i_name varchar(50),
out o_result varchar(100)
)
begin
select i_num as '输入乎拦嫌参数1', i_name as '输入参岁手数2';
set o_result = '输入参数结果为:';
end;

Ⅳ 数据库存储过程怎么编写

第一步:点击数据库下的“可编程性”,选择“存储过程”,点击鼠标右键,选择“新建存储过程”
第二步:在create PROCEDURE 后 输入存储过程的名字,紧跟着的就是定义存储过程的参数,接下来就可以去编写自己所需要组装的存储过程语句了
第三步: 编译存储过程,在工具栏上按下执行按钮,如果没有错误,就编写成功了。
第四步:调用:在sqlserver的语句查询框中,输入exec 存储过程名 参数,执行就可以了。

基本语法格式如下:中括号带的是可选项
create proc | procere pro_name
[{@参数数据类型} [=默认值] [output],
{@参数数据类型} [=默认值] [output],
....
]
as
begin
SQL_statements
--业务处理
end

Ⅳ 存储过程精通需要多长时间

MySQL不仅易学,开发成本低,而且90%以上的数据库操作都跟通用的SQL语法一致。体积小、速度快,性能优异,是目前企业实际开发中最广泛应用的数据库之一。

mysql多久才能学会呢?因人而异,如果你对它非常感兴趣,也非常迫切想学好它的话,并且一直很认真的去学习,相信你用不了多久就会学好mysql,而且一周时间足够了,但是如果你不感兴趣,而且你也不愿意付出行代价和时间去学习,很难学好学会它,而且时间也会耗费的很长。

为了更方便大家学习,我给大家整理了MySQL数据库学习路线和学习课时安排,希望对你的学习有帮助。

MySQL数据库从入门到精通是计算机专业学生必修的一门重要专业拓展选修课。内容覆盖全面、讲解详细,其中包括初识数据库、数据库和表的基本操作、表中数据的基本操作、单表查询、数据的完整性、多表查询、常用函数、视图、存储过程、触发器、数据库事务、MySQL高级操作和综合案例等,绝乎衫了解MySQL数据库技术发展应用的领域与前景,激发学生的学习兴趣,为进一步学习和应用计算机奠定良好的基础。

章目 学时分配
第1章 初识数据库 2学时
第2章 数据库和表的基本操作 2学时
第3章 表中数据的基本操作 2学时
第顷州4章 单表查询 2学时
第5章 数据的完整性 4学时
第6章 多表查询 2学时
第7章 常用函数 4学时
第8章 视图 2学时
第9章 存储过程 2学时
第10章 触发器 2学时
第11章 数据库事务 2学时
第12章 MySQL高级操作 2学时
第13章 综合案例 2学时
合计 30学时
如果你不想一个人野并腔蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以私信大家一起讨论交流。

Ⅵ MySQL数据库新特性之存储过程入门教程

在MYSQL 中 终于引入了存储过程这一新特性 这将大大增强MYSQL 的数据库处理能力 在本文中 将指导读者快速掌握MYSQL 的存储过程的基本知识 带领用户入门

存储过程介绍

存储过程是一组为了完成特定功能的SQL语句集 经编译后存储在数据库中 用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它 存储过程可由应用程序通过一个调用来执行 而且允许用户声明变量 同时 存储过程可以接收和输出参数 返回执行存储过程的状态值 也可以嵌套调用

存储过程的优点

作为存储过程 有以下这些优点

( )减少网络通信量 调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别 可是如果存储过程包含上百行SQL语句 那么其性能绝对比一条一条的调用SQL语句要高得多

( )执行速度更快 存储过程创建的时候 数据库已经对其进行了一次解析和优化 其次 存储过程一旦执行 在内存中就会保留一份这个存储过程 这样下次再执行同样的存储过程时 可以从内存中直接中读取

( )更强的安全性 存储过程是通过向用户授予权限(而不是基于表) 它们可以提供对特定数据的访问 提高代码安全 比如防止 SQL注入

( ) 业务逻辑可以封装存储过程中 这样不仅容易维护 而且执行效率也高

当然存储过程也有一些缺点 比如

可移植性方面 当从一种数据库迁移到另外一种数据库时 不少的存储过程的编写要进行部分修改

存储过程需要花费一定的学习时间去学习 比如学习其语法等

在MYSQL中 推荐使用MYSQL Query Browswer()这个工具去进行存储过程的开发和管理 下面分步骤来学习MYSQL中的存储过程

定义存储过程的结束符

在存储过程中 通常要输入很多SQL语句 而SQL语句中每个语句以分号来结束 因此要告诉存储过程 什么位置是意味着整个存储过程结束 所以我们在编写存储过程前 先定义分隔符 我们这里定义 // 为分隔符 我们使用DELIMITER //这样的语法 就可以定义结束符了 当然你可以自己定义其他喜欢的符号

如何创建存储过程

下面先看下一个简单的例子 代码如下

DELIMITER//CREATEPROCEDURE`p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENT A procere BEGINSELECT Hello World ! ;END//

下面讲解下存储过程的组成部分

)首先在定义好终结符后 使用CREATE PROCEDURE+存储过程名的方法创建存储过程 LANGUAGE选项指定了使用的语言 这里默认是使用SQL

)DETERMINISTIC关键词的作用是 当确定每次的存储过程的输入和输出都是相同的内容时 可以使用该关键词 否则默认为NOT DETERMINISTIC

) SQL SECURITY关键词 是表示调用时检查用户的权限 当值为INVOKER时 表示是用户调用该存储过程时检查 默认为DEFINER 即创建存储过程时检查

) MENT部分是存储过程的注释说明部分

lishixin/Article/program/MySQL/201404/30557

Ⅶ 数据库怎么编写存储过程

SQL Server的语法:

create procere proc_name

(@para1 int)

as

sql-statement;

Mysql的语法:

create procere proc_name

(para1 int)

sql-statement;

上面的para1是参数,如果不需要可以省略括号里的内容

sql-statement是你存储过程要执行的语句,

如果还有什么疑问可以说出来

Ⅷ 谁能推荐一本oracle 存储过程的书 入门到熟练的

台湾萧文龙先生写的《Oracle10g数据库入门与实践》(请分辨清楚书名,不是《Oracle10g入门与实践》) ,这是一本非常好的书,容易看懂,有操作实例。别的基本都是垃圾。

Ⅸ 存储过程的触发器

触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如Update、 Insert、 Delete 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1) 强化约束(Enforce restriction)
触发器能够实现比CHECK 语句更为复杂的约束。
(2) 跟踪变化Auditing changes
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。
(3) 级联运行(Cascaded operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4) 存储过程的调用(Stored procere invocation)。
为了响应数据库更新,触发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS(数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(Insert、 Update、 Delete)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。 SQL Server 2000 支持两种类型的触发器:AFTER 触发器和INSTEAD OF 触发器。其中AFTER触发器即为SQL Server 2000 版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(Insert Update Delete) 之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。
INSTEAD OF触发器表示并不执行其所定义的操作(Insert、 Update、 Delete),而仅是执行触发器本身。既可在表上定义INSTEAD OF触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器。 Create procere procere_name
[@parameter data_type][output]
[with]{recompile|encryption}
as
sql_statement
解释:
output:表示此参数是可传回的
with {recompile|encryption}
recompile:表示每次执行此存储过程时都重新编译一次
encryption:所创建的存储过程的内容会被加密
如:
表book的内容如下
编号 书名 价格
001 C语言入门 $30
002 PowerBuilder报表开发 $52
实例1:查询表Book的内容的存储过程
create proc query_book
as
select * from book
go
exec query_book
实例2:
加入一笔记录到表book,并查询此表中所有书籍的总金额 Createprocinsert_book@param1char(10),@param2varchar(20),@param3money,@---------加密asinsertintobook(编号,书名,价格)Values(@param1,@param2,@param3)select@param4=sum(价格)frombookgo执行例子:declare@total_pricemoneyexecinsert_book顛','Delphi控件开发指南',$100,@total_priceoutputprint'总金额为'+convert(varchar,@total_price)go存储过程的3种传回值:
1)、以Return传回整数
2)、以output格式传回参数
3)、Recordset
传回值的区别:
output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。
实例3:
设有两个表为Proct,Order_,其表内容如下:
Proct
产品编号 产品名称 客户订数
001 钢笔 30
002 毛笔 50
003 铅笔 100
Order_
产品编号 客户名 客户订金
001 南山区 $30
002 罗湖区 $50
003 宝安区 $4
请实现按编号为连接条件,将两个表连接成一个临时表,该表只含编号.产品名.客户名.订金.总金额,
总金额=订金*订数,临时表放在存储过程中
代码如下:
Create proc temp_sale
as
select a.产品编号,a.产品名称,b.客户名,b.客户订金,a.客户订数* b.客户订金 as总金额
into #temptable from Proct a inner join Order_ b on a.产品编号=b.产品编号-----此处要用别名
if @@error=0
print 'Good'
else
print 'Fail'
go

Ⅹ 数据库存储过程的习题

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[book_total]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[book_total]
GO

CREATE procere book_total (@allvalue int output)
as
begin
select @allvalue = Sum(价格) from book
end
GO

热点内容
用什么来配置溶液 发布:2024-05-10 05:24:39 浏览:830
压缩车多少钱一辆 发布:2024-05-10 05:13:22 浏览:307
阿里巴巴最快的存储引擎 发布:2024-05-10 05:12:39 浏览:441
vx编译器 发布:2024-05-10 05:05:53 浏览:411
炸出脚本 发布:2024-05-10 04:57:26 浏览:638
javasejavame 发布:2024-05-10 04:45:50 浏览:892
电脑配置怎么看生产年份 发布:2024-05-10 04:41:34 浏览:125
常用数据库类型有哪些类型有哪些类型有哪些 发布:2024-05-10 04:41:28 浏览:232
6爷源码网 发布:2024-05-10 04:41:28 浏览:41
苹果微信反编译朋友圈转发 发布:2024-05-10 04:40:44 浏览:221