当前位置:首页 » 编程语言 » sql常用功能存储过程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql常用功能存储过程

发布时间: 2023-02-14 09:17:24

sql 中的 存储过程 使用

以下为引用的内容:

Create procere procee_name

[@parameter data_type][output]

[with]{recompile|encryption}

as

sql_statement

解释:

output:表示此参数是可传回的

with {recompile|encryption}

recompile:表示每次执行此存储过程时都重新编译一次

encryption:所创建的存储过程的内容会被加密

二、SQL存储过程学习:存储过程的创建

表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则传回到执行批次的客户端中

㈡ SQL实现存储过程

存储过程的概念
SQL Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server数据库服务器来完成,以实现某个任务,这种方法就是存储过程。
存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。
在SQL Server中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。

可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列SQL语句。
可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,而且减少网络通信的负担。
安全性更高。
创建存储过程

在SQL Server中,可以使用三种方法创建存储过程 :
①使用创建存储过程向导创建存储过程。
②利用SQL Server 企业管理器创建存储过程。
③使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。

㈢ 在SQL中存储过程的一般语法是什么

1、 创建语法

createproc|procerepro_name

[{@参数数据类型}[=默认值][output],

{@参数数据类型}[=默认值][output],

....

]

as

SQL_statements

2、 创建不带参数存储过程

--创建存储过程

if(exists(select*fromsys.objectswherename='proc_get_student'))

dropprocproc_get_student

go

createprocproc_get_student

as

select*fromstudent;

--调用、执行存储过程

execproc_get_student;

3、 修改存储过程

--修改存储过程

alterprocproc_get_student

as

select*fromstudent;

4、 带参存储过程

--带参存储过程

if(object_id('proc_find_stu','P')isnotnull)

dropprocproc_find_stu

go

createprocproc_find_stu(@startIdint,@endIdint)

as

select*fromstudentwhereidbetween@startIdand@endId

go

execproc_find_stu2,4;

5、 带通配符参数存储过程

--带通配符参数存储过程

if(object_id('proc_findStudentByName','P')isnotnull)

dropprocproc_findStudentByName

go

createprocproc_findStudentByName(@namevarchar(20)='%j%',@nextNamevarchar(20)='%')

as

select*fromstudentwherenamelike@nameandnamelike@nextName;

go

execproc_findStudentByName;execproc_findStudentByName'%o%','t%';

(3)sql常用功能存储过程扩展阅读:

SQL存储过程优点:

1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。

2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。

㈣ SQL 中存储过程怎么使用

一、简单的储存过程:

1、创建一个存储过程

create procere GetUsers()

begin

select * from user;

end;12345

2、调用存储过程

call GetUsers();12

3、删除存储过程

drop procere if exists GetUsers;

二、带参数的存储过程

1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;

2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出

create procere GetScores(

out minScore decimal(8,2),

out avgScore decimal(8,2),

out maxScore decimal(8,2)

)

begin

select min(score) into minScore from user;

select avg(score) into avgScore from user;

select max(score) into maxScore from user;

end;1234567891011

3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以@开始) , 如下所示 :

call GetScores(@minScore, @avgScore, @maxScore);12

4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量@minScore, @avgScore, @maxScore, 然后即可调用显示该变量的值 :

select @minScore, @avgScore, @maxScore;

5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :

create procere GetNameByID(

in userID int,

out userName varchar(200)

)

begin

select name from user

where id = userID

into userName;

end;12345678910

6、调用存储过程 :

call GetNameByID(1, @userName);

select @userName;123

㈤ sql 存储过程

sql的存储过程有点类似函数,c#里就像执行sql语句一样 执行存储过程就行,

(1)执行一个没有参数的存储过程的代码如下:

SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
然后只要选择适当的方式执行此处过程,用于不同的目的即可。

(2)执行一个有参数的存储过程的代码如下(我们可以将调用存储过程的函数声明为ExeProcere(string inputdate)):

SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
(以上代码相同,以下为要添加的代码)
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
这样就添加了一个输入参数。若需要添加输出参数:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
若要获得参储过程的返回值:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);

㈥ SQL SERVER 如何应用存储过程呢操作方法有什么呢

SQL SERVER 如何应用存储过程呢?

首先最好在SQL SERVER的管理工具中通过create procere写一条语句来创建存储过程,创建语句后,点击工具栏中的执行命令,消息栏中显示命令已成功完成的消息,证明存储过程已创建。然后就可以在存储过程子文件夹下看到自己创建的存储过程了,执行存储过程,可以使用exec命令,后跟存储过程的名称,另外,还可以在创建存储过程的时候传入参数,如下图,需要使用@符号传入参数,如果你的存储过程加了参数,那么如果你调用的时候没有传入参数,SQL SERVER会提示错误。

3、存储过程减少网络流量对于数据库对象的相同操作,如果将此次操作所涉及的T-SQL语句组织成一个存储过程,在客户端调用该存储过程时,只在网络上传递调用语句,否则会是多条 SQL 语句。从而减轻了网络流量,降低了网络负载存储过程可以用作安全机制,系统管理员可以对要执行的存储过程的权限进行限制,从而限制对某些数据的访问,避免未经授权的用户访问数据,保证数据安全。

㈦ mysql中的存储过程怎么使用

存储过程(Stored Procere)是一组为了完成特定功能的SQL语句集功能是将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来, 以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用 call 存储过程名字, 即可自动完成命令。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,可由应用程序通过一个调用来执行,而且允许用户声明变量 。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。

㈧ 程序员工作常用的sql存储过程

给两个例子,有问题在追问吧。(sqlserver环境)

CREATEPROCEDUREproc_stu/*proc_stu为存储过程的名称*/
AS
DECLARE@writtenAvgfloat,@labAvgfloat/*笔试平均分和机试平均分变量*/
SELECT@writtenAvg=AVG(writtenExam),
@labAvg=AVG(labExam)FROMstuMarks
print'笔试平均分:'+convert(varchar(5),@writtenAvg)
print'机试平均分:'+convert(varchar(5),@labAvg)
IF(@writtenAvg>70AND@labAvg>70)
print'本班考试成绩:优秀'/*显示考试成绩的等级*/
ELSE
print'本班考试成绩:较差'
print'--------------------------------------------------'
print'参加本次考试没有通过的学员:'
SELECTstuName,stuInfo.stuNo,writtenExam,labExam/*显示未通过的学员*/

stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<60ORlabExam<60
GO


CREATEPROCEDUREproc_stu
@writtenPassint=60,/*输入参数:笔试及格线*/
@labPassint=60/*输入参数:机试及格线*/
AS
print'--------------------------------------------------'
print'参加本次考试没有通过的学员:'
SELECTstuName,stuInfo.stuNo,writtenExam,/*查询没有通过考试的学员*/
labExamFROMstuInfo
INNERJOINstuMarksON
stuInfo.stuNo=stuMarks.stuNo
WHEREwrittenExam<@writtenPass
ORlabExam<@labPass
GO

㈨ sql有哪些系统存储过程,各有什么功能

打开sql2005--数据库--系统数据库---master--可编辑性--存储过程--系统存储过程。。里面全是。。
具体都什么功能 去帮助里 对应的找下。。呵呵。。