≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

SQL Server数据库存储过程解析

人气:352 时间:2020-06-01

这篇文章主要为大家详细介绍了SQL Server数据库存储过程解析,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

 

什么是存储过程

 

如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。

竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值。

存储过程的优点:   

存储过程的能力大大增强了SQL语言的功能和灵活性。

1.可保证数据的安全性和完整性。
2.通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
3.通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
4.在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程5.可极大地改善SQL语句的性能。
6.可以降低网络的通信量。
7.使体现企业规则的运算程序放入数据库服务器中,以便 集中控制。

存储过程可以分为系统存储过程、扩展存储过程和用户自定义的存储过程

 

系统存储过程

 

我们先来看一下系统存储过程,系统存储过程由系统定义,主要存放在MASTER数据库中,名称以"SP"开头或以"XP"开头。尽管这些系统存储过程在MASTER数据库中,

但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中。

 

常用系统存储过程有:

代码如下:



exec sp_databases; --查看数据库

exec sp_tables;        --查看表

exec sp_columns student;--查看列

exec sp_helpIndex student;--查看索引

exec sp_helpConstraint student;--约束

exec sp_helptext 'sp_stored_procedures';--查看存储过程创建定义的语句

exec sp_stored_procedures;

exec sp_rename student, stuInfo;--更改表名

exec sp_renamedb myTempDB, myDB;--更改数据库名称

exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库

exec sp_helpdb;--数据库帮助,查询数据库信息

exec sp_helpdb master;

exec sp_attach_db --附加数据库

exec sp_detach_db --分离数据库

 

 

存储过程语法:

 

在创建一个存储过程前,先来说一下存储过程的命名,看到好几篇讲存储过程的文章都喜欢在创建存储过程的时候加一个前缀,养成在存储过程名前加前缀的习惯很重要,虽然这只是一件很小的事情,但是往往小细节决定大成败。看到有的人喜欢这样加前缀,例如proc_名字。也看到这加样前缀usp_名字。前一种proc是procedure的简写,后一种sup意思是user procedure。我比较喜欢第一种,那么下面所有的存储过程名都以第一种来写。至于名字的写法采用骆驼命名法。

 

创建存储过程的语法如下:

代码如下:



CREATE PROC[EDURE] 存储过程名

 

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

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

AS

SQL语句

EXEC 过程名[参数]

 

 

使用存储过程实例:

 

 

1.不带参数

代码如下:



create procedure proc_select_officeinfo--(存储过程名)

as select Id,Name from Office_Info--(sql语句)

 

exec proc_select_officeinfo--(调用存储过程)


2.带输入参数

代码如下:




create procedure procedure_proc_GetoffinfoById --(存储过程名)

@Id int--(参数名 参数类型)

as select Name from dbo.Office_Info where Id=@Id--(sql语句)

 

exec procedure_proc_GetoffinfoById 2--(存储过程名称之后,空格加上参数,多个参数中间以逗号分隔)

注:参数赋值是,第一个参数可以不写参数名称,后面传入参数,需要明确传入的是哪个参数名称

 

 

3.带输入输出参数

代码如下:




create procedure proc_office_info--(存储过程名)

@Id int,@Name varchar(20) output--(参数名 参数类型)传出参数要加上output

as 

begin

select @Name=Name from dbo.Office_Info where Id=@Id --(sql语句)

end

declare @houseName varchar(20) --声明一个变量,获取存储过程传出来的值

exec proc_office_info--(存储过程名)

4,@houseName output--(传说参数要加output 这边如果用@变量 = OUTPUT会报错,所以换一种写法)

select @houseName--(显示值)

 

 

4.带返回值的

代码如下:




create procedure proc_office_info--(存储过程名)

@Id int--(参数名 参数类型)

as 

begin

if(select Name from dbo.Office_Info where Id=@Id)=null --(sql语句)

begin

return -1

end

else

begin

return 1

end

end

 

declare @house varchar(20) --声明一个变量,获取存储过程传出来的值
exec @house=proc_office_info 2 --(调用存储过程,用变量接收返回值)
--注:带返回值的存储过程只能为int类型的返回值
print @house

 

 

本文来自:http://www.q1010.com/179/8889-0.html

注:关于SQL Server数据库存储过程解析的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • 调整SQLServer2000运行数据库结构的简单示例
  • 解决SQLServer远程连接失败的问题
  • 数据库触发器DB2和SqlServer区别解析
  • 解决在Azure上部署Sqlserver网络访问不了示例
  • 在sqlserver中如何使用CTE解决复杂查询问题
  • SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下)
  • SQLServer存储过程中事务的使用方法
  • 使用SqlServer CTE递归查询处理树、图和层次结构
  • SqlServer如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息
  • SQLServer中merge函数用法分析
上一篇:win2008 r2 安装sql server 2005/2008 无法连接服务器解决方法
下一篇:SQL Server 数据查询必须会的SQL语句(六)
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。