美文网首页
存储过程

存储过程

作者: 任人渐疏_Must | 来源:发表于2021-09-29 11:35 被阅读0次
--创建不带参数的存储过程

--获取所有的学生成绩信息
if exists(select * from sysobjects where name='Proc_GetAllStuMark')
drop proc Proc_GetAllStuMark
go
create proc Proc_GetAllStuMark
as
    select a.StuName,b.Subject,b.Score 
    from StuInfo a,StuMarks b
    where a.StuID=b.StuID
go
exec Proc_GetAllStuMark
execute Proc_GetAllStuMark --使用execute 执行存储过程


--创建带有参数的存储过程

--根据学生姓名,获得学生成绩
if  exists(select * from sysobjects where name='Proc_GetStuMarkByStuName')
drop proc Proc_GetStuMarkByStuName
go
create proc Proc_GetStuMarkByStuName
@stuname varchar(20)
as
    select a.StuName,b.Subject,b.Score
    from StuInfo a,StuMarks b
    where a.StuID=b.StuID
    and a.StuName=@stuname
go
exec Proc_GetStuMarkByStuName '李四'

--创建参数有默认值的存储过程

--添加学生信息表的数据
if  exists(select * from sysobjects where name='Proc_InsertStuInfo')
drop proc Proc_InsertStuInfo
go
create proc Proc_InsertStuInfo
@stuname varchar(20),
@stusex char(2)='男',
@classid int = 2
as
    insert into StuInfo(StuName,StuSex,ClassID)
    values(@stuname,@stusex,@classid)
go
--调用参数有默认值的存储过程
exec Proc_InsertStuInfo '唐僧'
exec Proc_InsertStuInfo '猪八戒',@classid=1


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

--根据学生姓名查找学员java分数

if exists(select * from sysobjects where name='Proc_GetCMarkByStuName')
drop proc Proc_GetCMarkByStuName
go
create proc Proc_GetCMarkByStuName
@stuname varchar(20),
@cmark int output --output定义当前的参数为输出参数
as
    --打印初始值
    print '分数的初始值:'+convert(varchar,@cmark)

    select @cmark=b.Score from StuInfo a,StuMarks b
    where a.StuID=b.StuID
    and b.Subject='java' and a.StuName=@stuname
go

--调用该存储过程
declare @cmark int
set @cmark=100
exec Proc_GetCMarkByStuName '李四',@cmark output
print '李四的java分数为:'+convert(varchar,@cmark)

--列出服务器上的所有数据库
EXEC sp_databases
--更改数据库的名称
exec sp_renamedb 'lession05','lession5'
use Lession3
go
--返回当前环境下可查询的对象的列表
exec sp_tables
--返回某个表列的信息
exec sp_columns StuInfo
--查看某个表的所有信息
exec sp_help StuInfo
--查看某个表的约束
exec sp_helpconstraint StuInfo
--查看某个表的索引
exec sp_helpindex StuMarks
--显示视图实际文本
exec sp_helptext 'view_stuInfo_stuMarks'
--列出当前环境中的所有存储过程
exec sp_stored_procedures



--实现以零作除数错误

--自定义错误
--raiserror(错误消息,严重级别,状态)
if exists(select * from sysobjects where name='Proc_Devide')
drop proc Proc_Devide
go
create proc Proc_Devide
@a int,
@b int
as  
    declare @c int
    if(@b=0)
    begin
        raiserror('以零作除数错误',15,2)
        return
    end
    set @c=@a/@b
go
exec Proc_Devide 10,0
select @@error as 错误编号



--练习1
--使用xp_cmdshell创建Student数据库,StuInfo数据表
USE master
exec xp_cmdshell 'md d:\MyDB',no_output
go

create database Student
on(
    name='student',
    filename='d:\MyDB\student.mdf'
)
log on(
    name='student_log',
    filename='d:\MyDB\student_log.ldf'
)
go
use Student
create table StuInfo(
    sid int identity(1,1) primary key,
    sname varchar(10),
    sex varchar(2)

)
go

--练习2
--创建向表Stuinfo插入数据的存储过程
create proc InsertRecord
@sname varchar(10),
@sex char(2)
as
insert into StuInfo values(@sname,@sex)

go
--调用存储过程,插入数据

exec InsertRecord'张明仁','男'
go
exec InsertRecord'李朋鸣','男'
go
exec InsertRecord'罗瑞红','女'
go

--练习3

--创建表StuScore
use Student
create table StuScore(
    id int identity(1,1) primary key,
    sid int references StuInfo(sid) not null,
    exam int not null
)
go

--创建向表StuScore插入数据的存储过程
create proc InsertScore
@sid int,
@eaxm int
as
insert into StuScore values(@sid,@eaxm)
 
go
--插入数据
exec InsertScore 1,85
go
exec InsertScore 2,65
go


if exists (select * from sysobjects where name='proc_name')
drop proc proc_name
go
create proc proc_name
@sname varchar(10)='*',
@count int=0
as  
    if  @sname = '*'
        begin
        select sname,exam from StuInfo a,StuScore b where a.sid = b.sid
        end
    else
        begin
        select @count = count(*) from StuInfo a,StuScore b where a.sid = b.sid and sname=@sname
        if @count = 0
            begin 
                print convert(varchar(10),@sname)+'学生不存在'
            end
        else
            begin
            select sname,exam from StuInfo a,StuScore b where a.sid = b.sid and sname=@sname
            end
        
        end
go


exec proc_name'张仁'
go



exec proc_name






相关文章

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • MySQL批量添加数据

    创建存储过程 执行存储过程 删除存储过程

  • 17 存储过程

    过程: 函数: 过程是没有返回值的函数 存储过程: 存储过程语法 存储过程1--创建简单的存储过程 存储过程2--...

  • 存储过程

    详见存储过程详解 创建存储过程 使用存储过程 存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一...

  • 存储过程与函数

    存储过程与函数存储过程的定义存储过程的创建存储过程的操作自定义函数 存储过程与函数 存储过程的定义 运行效率高 降...

  • 存储过程

    ps 不能修改过程体,要修改过程体必须先删除存储过程,再重建 mysql变量的术语分类: 1.用户变量:以"@"开...

  • 存储过程

    存储过程 过程,可以简单理解为是一个函数。 函数和过程的区别:函数总是向调用者返回数据,而过程没有数据返回。 Or...

  • 存储过程

    存储过程(Stored Procedure)是一个可编程的函数,是为了完成特定功能的SQL语句集;创建的存储过程保...

  • 存储过程

    一.基础语法 说明 delimiter // 一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;...

  • 存储过程

    存储过程:带有逻辑的sql语句。之前的sql没有条件判断,循环。 存储过程带上流程控制语句(if,while)。 ...

网友评论

      本文标题:存储过程

      本文链接:https://www.haomeiwen.com/subject/whyknltx.html