sql学习总结(7)——存储过程和函数技术

存储过程是一组完成特定功能的T_SQL语句集合,经编译后存储在SQL Server服务端数据库中,可以加速SQL语句的执行。

7.1创建存储过程

语法格式:

create proc 过程名

@parameter 参数类型

...

@parameter 参数类型 output

...

as

begin

命令行或命令块

end

执行存储过程语法格式:

execute 过程名[参数值,...][output]

7.1.1不带参数的存储过程

create procedure pro_mygz1

as

select 姓名,工资,(select avg(工资) from 职工) as 平均工资from 职工 where 姓名 not like ‘%平%’

execute pro_mygz1

7.1.2带参数的存储过程

根据输入的城市、最小工资和最大工资来显示职工姓名、工资、所在仓库的面积及金额信息:

create procedure pro_mypro2

@city varchar(50),

@mingz int,

@maxgz int

as

select 姓名,工资,面积,金额 from 职工,仓库,订购单 where 仓库.仓库号=职工.仓库号 and 职工.职工号=订购单.职工号 and 城市[email protected] and 工资>[email protected] and 工资<[email protected]

显示城市在“青岛”、最低工资为1200、最高工资为2400的职工姓名、工资、所在仓库的面积及金额信息:

execute pro_mypro2 ‘青岛’,1200,2400

创建带有输出参数的存储过程

create procedure pro_mypro3

@min int output,

@max int output,

@avg int output

as

begin

select @min=min(工资) from 职工

select @max=max(工资) from 职工

select @avg=avg(工资) from 职工

end

执行:

declare @x1 int,@x2 int,@x3 int

execute pro_mypro3 @x1 output,@x2 output,@x3 output

select @x1 as 最小工资,@x2 as 最大工资,@x3 as 平均工资

7.2修改、查看和删除存储过程

7.2.1修改存储过程

只需把关键字create改成alter即可

7.2..2重命名

execute    sp_rename 原存储过程名,新存储过程名

7.2.3查看存储过程代码

execute    sp_helptext     pro_mypro

7.2.4查看存储过程所使用的数据对象信息

execute    sp_depends     pro_mypro

7.2.5查看存储过程的属性信息

execute    sp_help   pro_mypro

7.2.6删除存储过程

drop proc 过程名,[...]

7.3存储过程的自动执行与监控

利用sp_procoption可以自动执行master数据库中的存储过程,利用sp_monitor可以监控指定数据库的存储过程。

自动执行存储过程语法结构:

sp_procoption [@procName=] ‘procedure’,

[@ optionName=] ‘option’,

[@optionValue=] ‘value’

各参数的意义如下:

[@procName=] ‘procedure’ 表示要自动执行的存储过程

[@ optionName=] ‘option’其值是startup,即自动执行存储过程

[@optionValue=] ‘value’表示自动执行是开(true)或是关(false)

利用sp_monitor监控存储过程,其返回集的各参数意义如下:

last_run:上次运行的时间

current_run:本次运行的时间

seconds:自动执行存储过程以来所经过的时间

cpu_busy:计算机CPU处理该存储过程所使用的时间

io_busy:在输入和输出操作上花费的时间

idle:SQL Server已空闲的时间

packets_received:SQL Server读取的输入数据包数

packets_sent:SQL Server写入的输出数据包数

packets_errors:SQL Server在写入和读取数据包时遇到的错误数

total_read:SQL Server读取的次数

total_write:SQL Server写入的次数

total_errors:SQL Server在写入和读取时遇到的错误数

connections:登录或尝试登录SQL Server的次数

首先,在系统数据库master中创建一个存储过程:

user master

go create procedure masterproc

as

select * from spt_values

其次,利用sp_procoption系统函数设置存储过程masterproc为自动执行:

user master

go

sp_procoption @procName=’masterproc’,

@ optionName= ‘startup’,

@optionValue=]=‘true’

利用系统函数sp_monitor监控指定数据库中的存储过程:

use db_company

execute sp_monitor

创建函数

语法格式:

creat       e      function  函数名(@parameter      变量类型[,@parameter  变量类型])

returns 变量   as

begin

命令行或程序块

end

注意:在自定义函数时,必须有返回值,可以是int、char等类型,还可以是表型。

创建:

create function db_fun1(@x int)

returns int

as

begin

declare @y int

set @[email protected]*@x

return @y

end

调用:

print dbo.db_fun1(4)

7.4修改、查看和删除函数

7.4.1修改存储过程

只需把关键字create改成alter即可

7.4..2重命名

execute    sp_rename 原函数名,新函数名

7.4.3查看函数代码

execute    sp_helptext     pro_myfun

7.4.4查看函数所使用的数据对象信息

execute    sp_depends     pro_myfun

7.4.5查看函数的属性信息

execute    sp_help   pro_myfun

7.4.6删除函数

drop function 过程名,[...]

7.5日期时间函数

1.getdate()

2.year(date_expression)

3.month(date_expression)

4.day(date_expression)

5.datename(datepart,date_expression)

6.dateadd(datepart,number,date)

datediff(datepart,startpart,endpart)

时间: 2024-08-30 09:50:35

sql学习总结(7)——存储过程和函数技术的相关文章

解密SQL SERVER 2005加密存储过程,函数

在SQL SERVER 2005中必须用专用管理连接才可以查看过程过程中用到的表 EG:sqlcmd -A 1>use test 2>go 1>sp_decrypt 'p_testa' 2>go Text----------------------Create procedure P_testa with encryption as select * from test create PROCEDURE [dbo].[sp_decrypt] (@procedure sysname

SQL学习之T-SQL编程之函数

在这里,介绍T-SQL的函数,比如说,数学函数.字符串函数.转换函数.日期函数以及自定义函数 1.数学函数: 函数名 函数作用 abs 计算绝对值 1 rand 获取0-1随机数 2 round 四舍五入保留小数位 3 square 平方运算 4 power 幂运算 5 sqrt 平方根运算 6 pi 圆周率 7 ceiling 向上取整 8 floor 向下取整 9 ceiling(numeric_expression) 返回大于或等于所给数字表达式的最小整数(向上取整) floor(nume

sql学习总结(1)——数据库技术

1.1创建数据库 1.1.1创建默认数据库 create database db_sqldata     (db_sqldata是数据库名) 1.1.2创建指定数据库文件位置的数据库 create database Mydatabase1 on ( name=Mydatabase1_data, filename=’e:\mydata\Mydatabase1_data.mdf’, size=4, maxsize=10, filegrowth=10% ) log on ( name=Mydataba

SQL SERVER 获取对象(存储过程、函数等)参数信息

CREATE PROCEDURE [Common].[ProcLoadFunctionParameters] @inObjectName sysname AS BEGIN SELECT  sp.object_id AS FunctionId , sp.name AS FunctionName , (CASE WHEN param.is_output = 1 THEN 'OUTPUT' ELSE 'IN' END) AS ParamType, ISNULL(param.name, '') AS P

SQL问题: 超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)

1.问题的源代码如下: CREATE PROCEDURE P4 @avggrade int AS SELECT cno, AVG(grade) FROM sc GROUP BY cno HAVING AVG(grade) > @avggrade EXECUTE P4 @avggrade = 80 虽然没有报错,但是运行很多个结果出来 解决: CREATE PROCEDURE P4 @avggrade int AS SELECT cno, AVG(grade) FROM sc GROUP BY c

MYSQL存储过程和函数学习笔记

学至Tarena金牌讲师何山,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和函数,可以避免开发人员重复编写相同的SQL语句. MYSQL存储过程和函数是保存在服务器中,在服务器中存储和执行,可以减少客户端和服务器端之间数据传输的消耗. 存储过程就是一组已经保存在数据库中的语句,并且可以随时地调用. 存储过程允许标准组件式编程,存储过程在被创建以后可以在程序中被多次调用而

SQL学习(时间,存储过程,触发器)

SQL学习 几个操作时间的函数 1 --datapart 获取时间中的年月日时分秒等部分 2 select DATEPART(year,current_timestamp); 3 select DATEPART(DAY,current_timestamp); 4 select DATEPART(MONTH,current_timestamp); 5 6 --dateadd 在相应时间上加上年月日时分秒等 7 select CURRENT_TIMESTAMP,DATEADD(DAY,10,CURR

Sql Server存储过程和函数浅谈

今天给大家总结一下sql server中的存储过程和函数.本人是小白,里面内容比较初级,大神不喜勿喷 自行飘过就是.. 首先给大家简单列出sql server中的流控制语句,后面会用到的^_^ sql server常用控制语句 1.begin..end语句:该语句用来定义一串由顺序执行的SQL语句构成的块. begin statement block end 2.if....else语句:该语句用来定义有条件执行的某些语句. if boolen_expression statement [els

SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试.最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得. 首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是