sql数据库的视图和 存储过程怎么建?

sql数据库的视图和 存储过程怎么建?,第1张

建议你的数据库建立部门表的信息

在你的员工基本信息表里加一个

alter table 员工基本信息表

add column 部门编号 char(10)

建立部门表

create table 部门表

(

部门编号 char(10),

部门名称 char(10)

)

create view ccc

as

select max(d.基本工资-c.扣除工资) as 部门最高工资,min(d.基本工资-c.扣除工资) as 部门最低工资,avg(d.基本工资-c.扣除工资) as 部门平均工资,sum(d.基本工资-c.扣除工资) as部门工资总和

from 部门表 as b,员工基本信息表 as a,员工考勤情况表 as c,员工工情况表 as d

where a.员工号=c.员工号 and a.工种号=d.工种号 and a.部门编号=b.部门编号

group by b.部门名称

具体可以在改改

存储过程

create proc 过程名 @变量

as

begin

过程体

end

存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

在SQL Server 的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义存储过程。系统过程主要存储在master 数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Server 提供支持。通过系统存储过程,MS SQL Server 中的许多管理性或信息性的活动(如了解数据库对象、数据库信息)都可以被顺利有效地完成。尽管这些系统存储过程被放在master 数据库中,但是仍可以在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。而且当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。

一、存储过程的概念

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_procedures 列出当前环境可用的所有存储过程

除了系统存储过程,SQL Server 还提供以Xp_开头的扩展存储过程,如可以调用DOS命名的,XP_cmdshell 存储过程

用法如下:

代码如下 复制代码

EXEC Xp_cmdshell DOS 命名 [NO_OUTPUT]

NO_OUTPUT 为可选参数,表示是否输入存储过程返回的信息

三、用户自定义存储过程

1、语法

代码如下 复制代码

create procedure 存储过程名

@参数1名 数据类型 [=默认值] [参数类型(输入/输出)]

... ...

@参数n名 数据类型 [=默认值] [参数类型(输入/输出)]

as

begin

sql语句

end

go

参数类型分为输入参数和输出参数,默认为输入参数,使用OUTPUT表示输出参数。创建存储过程最好以proc开头

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

代码如下 复制代码

--判断存储过程是否存在

if object_id('proc_student','procedure') is not null

drop procedure proc_student

go

create procedure 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 procedure 存储过程名

@参数1名 数据类型 [=默认值]

....

@参数2名数据类型[=默认值]

as

SQl与语句

...

go

--例如

--创建带输入参数的存储过程

代码如下 复制代码

if object_id('proc_stu','procedure') is not null

drop procedure proc_stu

go

create procedure 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','procedure') is not null

drop procedure proc_s

go

create procedure 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9481587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存