存储过程

  1. 系统存储过程

  2. 自定义存储过程

  3. 扩展存储过程

一、创建存储过程

  1. 创建存储过程

--例1
USE SU
GO
Create Procedure SelProc
AS
Select *
From SC
GO --例2
USE SU
GO
Create Procedure CountProc
AS
Select Count(*) AS 总数
From Course
Go

 2. 存储过程调用

USE SU
GO
Exec SelProc
Exec CountProc

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

--例1 创建 带输入参数 的存储过程
USE SU
GO
Create Procedure QueryById @Sno varchar()
AS
Select *
from SC
Where Sno = @Sno
GO
--执行
GO
Execute QueryById ''
Execute QueryById @Sno = '' --创建 带默认参数 的存储过程
USE SU
GO
create Procedure QueryById2 @Sno varchar() = ''
AS
Select *
From SC
where Sno = @Sno
GO
--执行(可以不带参数, 因为有默认参数)
EXecute QueryById2

4. 创建带输出参数的存储过程(执行时候,需要声明!!!!!!)

--例4
Use SU
GO
Create Procedure QueryById3
@Sno varchar() = '',
@Cnocount INT OUTPUT --输出参数,Sno学号选的课程数
AS
Select @Cnocount = Count(SC.Cno)
From SC, Student
where SC.Sno = Student.Sno and SC.Sno = @Sno
GO
--执行
--必须先声明!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Declare @Sno varchar() = '';
Declare @Cnocount int; --声明之后再执行
EXEC QueryById3 @Sno, @Cnocount OUTPUT
Select '学号为' + @Sno + '选了' + Ltrim(STR(@Cnocount)) + '门课' --字符串还需要处理一下
GO

二、管理存储过程

1. 修改存储过程

------------管理存储过程------------------
--修改存储过程
exec CountProc --查询
GO
Alter Procedure CountProc
AS
select Sno, COUNT(*) AS 总数
From SC
Group By Sno --查看属性
GO
select OBJECT_DEFINITION(OBJECT_ID('QueryById')); --select OBJECT_DEFINITION(OBJECT_ID('存储过程名'));
Exec sp_help QueryById
Exec sp_helptext QueryById --删除操作
GO
DROP procedure 存储过程

三、扩展存储过程

可以将参赛传递过扩展存储过程,扩展存储过程也可以返回结果和状态

--查看系统版本信息
EXEC xp_msver

四、自定义函数(允许模块化程序设计)

1. 创建标量函数

--创建一个标量函数,指定学生id值,返回该学生姓名
GO
Create Procedure Snotosname @Sno varchar() = ''
AS
Begin
Declare @Sname varchar()
Select @Sname = (
Select Sname
From Student
where Sno = @Sno)
RETURN @Sname
End

2. 创建表值函数

--例1
GO
Create Function getStuRecordBySex(@Ssex char())
Returns Table
Return
(
select Sno, Sname, Ssex, (Sage + ) as newAge
From Student
where Ssex = @Ssex
)
--执行这个函数
--执行函数
Select *
From getStuRecordBySex('男')

3. 删除函数

--删除函数
Drop Function getStuRecordBySex

SQL语句(十八)—— 存储过程的更多相关文章

  1. SQL 语句调用这个存储过程,生成顺序编码

    一直很讨厌存储过程,没想到今天帮了我大忙啊,或许会因为今天让我慢慢喜欢上存储过程吧,不多说了,切入正题 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这 ...

  2. LINQ to SQL语句(20)之存储过程

    在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...

  3. 【存储过程】用SQL语句获得一个存储过程返回的表

    定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all select @id a ...

  4. Mysql常用sql语句(八)- where 条件查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  5. 用SQL语句获得一个存储过程返回的表

    1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...

  6. 动态sql语句,非存储过程,如何判断某条数据是否存在,如果不存在就添加一条

    已知一个表 table 里面有两个字段  A1 和 A2 如何用动态语句 判断 A1 = A , A2=B 的数据是否存在,如果不存在,就添加一条数据, A1 = A , A2 = B INSERT  ...

  7. sql 语句随机时间存储过程

    CREATE PROC [dbo].[Proc_GetRandomTime](@startTime datetime,@endTime datetime,@date datetime output ) ...

  8. 必须会的SQL语句(八)数据库的完整性约束

    实体完整性 1.建表时定义主键   Create table 表名    (         Sno int identity(1,1),         Sname nvarchar(20),    ...

  9. SQL语句(八)按条件查询

    SELECT * FROM student SELECT sclass, snumb, sname FROM student --物理班有哪些同学 --年龄小于20岁的有哪些同学? --定价在30元以 ...

  10. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

随机推荐

  1. POJ 3744 Scout YYF I 概率dp+矩阵快速幂

    题目链接: http://poj.org/problem?id=3744 Scout YYF I Time Limit: 1000MSMemory Limit: 65536K 问题描述 YYF is ...

  2. Scrum6.0

    一,组员任务完成情况 首页设计初步完成但是需要优化界面,只能简单的输出信息和在首页进行登录.界面极其简单. 鸡汤版面设计有困难,问题在于用何种形式来管理用户的数据上传,但是经过小组间的讨论确定设计方向 ...

  3. python selenium 代码

    from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElemen ...

  4. 根据端口号,利用DOS命令杀死进程

    比如利用DOS命令找出占用8080端口的程序的PID 然后用DOS命令杀死该进程 kill

  5. ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css

    今天想在后台封装一下bootstraptree这个插件,引入jquery.js bootstrap.js bootstrap.css bootstrap-tree.js后,我在页面查看脚本错误就连最简 ...

  6. Netty简单使用

    目录 丢弃服务器 DiscardServerHandler DiscardServer 测试 应答服务器 时间服务器 TimeServerHandler TimeClient TimeClientHa ...

  7. UVALive6442_Coins on a Ring

    真正的水题,可惜无法当场机智一下. 这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少? 其实是这样来考虑的,我们可以随便设置 ...

  8. nginx配置虚拟路径下载文件(.apk)

    公司将安卓apk文件放到服务器上,实现用户点击链接并下载 nginx version 1.14.1 nginx配置修改 server { listen 80; server_name localhos ...

  9. Scrapy初尝试

    ,python3.6版本 在看网上的安装的时候下一堆依赖,其实没有必要一个个的去装,pip直接分析依赖一块下载安装下来! 已经安装了pip模块 直接上 pip install scrapy 安装twi ...

  10. HDU.2147 kiki's game (博弈论 PN分析)

    HDU.2147 kiki's game (博弈论 PN分析) 题意分析 简单的PN分析 博弈论快速入门 代码总览 #include <bits/stdc++.h> using names ...