存储过程实例《转载》

存储过程入门与提高

什么是存储过程呢?

定义:

将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。

讲到这里,可能有人要问:这么说存储过程就是一堆SQL语句而已啊?

Microsoft公司为什么还要添加这个技术呢?

那么存储过程与一般的SQL语句有什么区别呢?

存储过程的优点:

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

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]{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,并查询此表中所有书籍的总金额

Create proc insert_book

@param1 char(10),@param2 varchar(20),@param3 money,@param4 money output

with encryption  ---------加密

as

insert book(编号,书名,价格) Values(@param1,@param2,@param3)    select @param4=sum(价格) from book   go

执行例子:    declare @total_price money    exec insert_book ‘003‘,‘Delphi 控件开发指南‘,$100,@total_price

print ‘总金额为‘+convert(varchar,@total_price)   go

存储过程的3种传回值:    1.以Return传回整数    2.以output格式传回参数    3.Recordset 传回值的区别:        output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中

实例3:设有两个表为Product,Order,其表内容如下:

Product            产品编号       产品名称    客户订数

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 Product a inner join Order b on a.产品编号=b.产品编号

if  @@error=0

print ‘Good‘

else

print ‘Fail‘

go

存储过程实例《转载》

时间: 2024-08-27 23:02:04

存储过程实例《转载》的相关文章

Spring Data JPA调用存储过程实例

Spring Data JPA调用存储过程实例 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JPA连接到数据库,调用存储过程,这样的需求很常见.本文就针对这一点,讲述如何使用Spring Data JPA调用存储过程的方法. 1.存储过程 假设存储过程如下: CREATE OR REPLACE PACKAGE test_pkg AS PROCEDURE in_only_test (inParam1 IN VARC

C# 最简单的三层架构实例 ——转载自网易博客

代码        /// <summary>        /// 初始化登录名称.登录密码(Model类)        /// </summary>        private string adminUser = string.Empty; //设置用户名称为空值        private string adminPwd = string.Empty; //设置用户密码为空值        public string AdminUser        {       

oracle存储过程实例

oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有非常多长处,详细归纳例如以下: * 存储过程和函数以命名的数据库对象形式存储于数据库其中.存储在数据库中的长处是非

SQL存储过程实例详解

SQL存储过程实例详解 本文用3个题目,从建立数据库到创建存储过程,详细讲解数据库的功能. 题目1 学校图书馆借书信息管理系统建立三个表: 学生信息表:student 字段名称 数据类型 说明 stuID char(10) 学生编号,主键 stuName Varchar(10) 学生名称 major Varchar(50) 专业 图书表:book 字段名称 数据类型 说明 stuID char(10) 学生编号,主键 stuName Varchar(10) 学生名称 major Varchar(

SQL Server创建存储过程(转载)

什么是存储过程? q       存储过程(procedure)类似于C语言中的函数 q       用来执行管理任务或应用复杂的业务规则 q       存储过程可以带参数,也可以返回结果 q       存储过程可以包含数据操纵语句.变量.逻辑 控制语句等 存储过程的优点 (1)执行速度快. 存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译. 存储在数据库服务器,性能高. (2)允许模块化设计. 只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储

PHP调用MYSQL存储过程实例

PHP调用MYSQL存储过程实例 标签: mysql存储phpsqlquerycmd 2010-09-26 11:10 11552人阅读 评论(3) 收藏 举报 实例一:无参的存储过程$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");mysql_select_db('test',$conn);$sql = "create procedure myproce()beginINSERT IN

java IO流文件的读写具体实例(转载)

引言: 关于java IO流的操作是非常常见的,基本上每个项目都会用到,每次遇到都是去网上找一找就行了,屡试不爽.上次突然一个同事问了我java文件的读取,我一下子就懵了第一反应就是去网上找,虽然也能找到,但自己总感觉不是很踏实,所以今天就抽空看了看java IO流的一些操作,感觉还是很有收获的,顺便总结些资料,方便以后进一步的学习... IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流

sybase带输出参数的存储过程实例

使用return返回 --create pro USE yfb go create proc cwqi_test_pro(  @newName varchar(20) out,  @oldName varchar(20) in  ) as begin   set @[email protected]   return 1 end --run pro DECLARE @newName varchar(20) DECLARE @oldName varchar(20) DECLARE @result 

存储过程 【转载】

存储过程小结 存储过程相当于C#  Java的函数 输入参数就是你要传入的一些值 .它从外面进来帮助你完成你的存储过程.输出参数就是你要传出去的一些值.它是从存储过程里面得出的值来帮助传出去完成外面要做的事情. 区别就是一个进一个出.输入参数是外程序帮助存储过程:输出参数是存储过程帮助外程序 1. 没有参数输入输出   2. 有参数输入,无参数输出 3.  参数输入,参数输出 在调用的时候,需要在外部单独声明一个变量,exec 输入参数,输出参数 output 写这么多,是为自己今后学习用. 1