存储过程(Stored Procere)是一组为了完成特定功能的SQL语句集功能是将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来, 以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用 call 存储过程名字, 即可自动完成命令。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,可由应用程序通过一个调用来执行,而且允许用户声明变量 。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。
㈡ oracle中的存储过程,有什么作用,以及怎么在代码中使用
定义:存储过程(Stored Procere )是一组为了完成特定功能的SQL 语句
集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数
(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要
对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后
存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,
若干个有联系的过程可以组合在一起构成程序包。
优点:存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。
proc = connection.prepareCall("{ call SIM_MEDICARE.P_Isinblacklist(?,?,?,?,?) }");
proc.setString(1, “”);设置传入参数
proc.registerOutParameter(4, Types.VARCHAR);注册传出参数
proc.execute();执行过程
proc.getString(4)获取结果
㈢ MS sql如何使用存储过程
一、存储过程的概念
T-SQl和C语言一样 ,是一门结构化的语言。
什么是存储过程?
存储过程是SQL查询语句与控制流程语句的预编译集合,并以特定的名称保存在数据库中。存储过程也是数据库对象
分类:
系统存储过程: 以sp_或xp_打头
用户自定义 :以proc_打头
存储过程的优点:
执行速度快 效率高
模块式编程
减少网络流量
提高安全性
二、系统存储过程
SQl server 的系统存储过程保存在master数据库中,且所有命名的系统存储过程命名以“Sp_”开头。在master数据库中,
系统存储过程数量如下:
代码如下 复制代码
select count([name])as '系统存储数量' from sysobjects
where [name] like 'sp_%'
EXECUTE 用来表示调用存储过程,也可以缩写为EXEC,
调用存储的语法如下:
EXECUTE ‘存储过程名’ ‘参数’ ---如果没有参数则省略参数
常用的系统存储过程
EXEC sp_databases 列出当前系统中的数据库
EXEC sp_renamedb 'Northwind','Northwind1' 修改数据库的名称(单用户访问)
USE stuDB GO EXEC sp_tables 返回某个表列的信息
EXEC sp_columns 查看指定列的信息
EXEC sp_help 查看某个表的所有信息
EXEC sp_helpconstraint '表名' 查看某个表的约束
EXEC sp_helpdb '数据库名' 或 EXEC sp_helpdb 查看指定数据库或所有数据库信息
EXEC sp_helptext '对象名称' 显示数据库对象(存储过程、触发器、试图)的定义文本
EXEC sp_helpindex '表名' 查看指定表的索引信息
EXEC sp_renamedb '原名称','新名称' 更改数据库名称
EXEC sp_stored_proceres 列出当前环境可用的所有存储过程
除了系统存储过程,SQL Server 还提供以Xp_开头的扩展存储过程,如可以调用DOS命名的,XP_cmdshell 存储过程
用法如下:
代码如下 复制代码
EXEC Xp_cmdshell DOS 命名 [NO_OUTPUT]
NO_OUTPUT 为可选参数,表示是否输入存储过程返回的信息
三、用户自定义存储过程
1、语法
代码如下 复制代码
create procere 存储过程名
@参数1名 数据类型 [=默认值] [参数类型(输入/输出)]
... ...
@参数n名 数据类型 [=默认值] [参数类型(输入/输出)]
as
begin
sql语句
end;
go
参数类型分为输入参数和输出参数,默认为输入参数,使用OUTPUT表示输出参数。创建存储过程最好以proc开头
2、创建不带参数的存储过程
代码如下 复制代码
--判断存储过程是否存在
if object_id('proc_student','procere') is not null
drop procere proc_student
go
create procere proc_student
as
begin
select pcid as '电脑编号',
case pcuse
when 0 then '空闲'
when 1 then '忙碌'
end as '使用状态' from pc
end;
--调用存储过程
execute proc_student select * from pc
go
3、创建带输入参数的存储过程
语法:
代码如下 复制代码
create procere 存储过程名
@参数1名 数据类型 [=默认值]
....
@参数2名 数据类型[=默认值]
as
SQl与语句
...
go
--例如
--创建带输入参数的存储过程
代码如下 复制代码
if object_id('proc_stu','procere') is not null
drop procere proc_stu
go
create procere proc_stu
@pcuse int
as
begin
select pcid as '电脑编号',
case pcuse
when 0 then '空闲'
when 1 then '忙碌'
end as '使用状态' from pc where pcuse=@pcuse end;
--调用存储过程
execute proc_stu @pcuse=1
4、创建带输出参数的存储过程
代码如下 复制代码
--创建带输出参数的存储过程
if OBJECT_ID('proc_s','procere') is not null
drop procere proc_s
go
create procere proc_s
@pcid int,
@pcus int output
as
begin
select @pcus=pcuse from pc where pcid=@pcid end;
--调用存储过程
declare @pcus int execute proc_s 5,@pcus output
四、处理错误信息
当存储过程的语句十分复杂时,可以在存储过程中加入错误语言。SQL Server中可以使用RAISERROR 返回用户自定义的错误信息。
RAISERROR 语法如下:
RAISERROR (自定义的错误信息,错误的严重级别,错误状态)
自定义错误信息:表示输出信息:表示输出的错误提示文本
错误的严重级别:表示用户自定义错误的严重性级别。(0-18极)
错误的状态:表示自定义错误的状态,值的范围在1-127
㈣ 存储过程如何使用呢
不论ORACLE
还是SQLSERVER
的存储过程,都是由N个语句集合形成一个过程,实现特定的功能(单个语句无法实现的功能),在其里面可以用到判断、循环等命令集合。
程序执行方式:将跟据不同的开发工具有不同的调用方式。
后台执行方式:execute
过程名(参数1
.....N)
㈤ SQL语句问题:存储过程定义是什么什么时候用它作用是什么怎样写,来个实例!
定义:存储过程是一组为了完成特定功能的SQL语句集,是利用SQL Server所提供的Transact-SQL语言所编写的程序。作用:将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来, 以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。什么时候用:提高数据库执行速度,对数据库进行复杂操作,重复使用,安全要求高例子: CREATE PROCEDURE order_tot_amt @o_id int, @p_tot int output AS SELECT @p_tot = sum(Unitprice*Quantity) FROM orderdetails WHERE ordered=@o_id GO