美文网首页
一些存储过程

一些存储过程

作者: 迷途小书虫88 | 来源:发表于2020-05-15 13:43 被阅读0次


create table books (

    book_id int identity(1,1) primary key,

    book_name varchar(20),

    book_price float,

    book_auth varchar(10)

);

--插入测试数据

insert into books (book_name,book_price,book_auth)

                    values

                        ('论语',25.6,'孔子'),

                        ('天龙八部',25.6,'金庸'),

                        ('雪山飞狐',32.7,'金庸'),

                        ('平凡的世界',35.8,'路遥'),

                        ('史记',54.8,'司马迁');

if (exists (select * from sys.objects where name = 'getAllBooks'))

    drop proc proc_get_student

go

--创建存储过程

create procedure getAllBooks

as

select * from books;

go

--修改存储过程

alter procedure dbo.getAllBooks

as

select book_auth from books;

--删除存储过程

drop procedure getAllBooks;

--重命名存储过程

sp_rename getAllBooks,proc_get_allBooks;

--调用,执行存储过程

exec getAllBooks;

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

create proc searchBooks(@bookID int)

as

    select * from books where book_id=@bookID;

exec searchBooks 1;

--带2个参数存储过程

create proc searchtwoBooks(

@bookID int,

@bookAuth varchar(20),

@booName varchar(20)

)

as

    select * from books where book_id=@bookID and book_auth = @bookAuth;

exec searchtwoBooks 2,'金庸';

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

if (exists (select * from sys.objects where name = 'getBookId'))

    drop proc getBookId

go

create proc getBookId(

    @bookAuth varchar(20),

    @bookName varchar(20) output

)

as

    select @bookName=book_name from books where book_auth=@bookAuth

declare @bookname varchar(20)

exec getBookId '孔子',@bookName output

select @bookName as bookname;

if (exists (select * from sys.objects where name = 'orderlist'))

    drop proc orderlist

go

create proc orderlist(

    @orderno varchar(20),

    @product varchar(20)

)

as

insert into t_product (orderno,product) VALUES(@orderno,@product)

--    select @bookName=book_name from books where book_auth=@bookAuth

declare @orderno varchar(20),

@product varchar(20)

set @orderno='ANS'+CONVERT(CHAR(10),GETDATE(),112)+'000002'

set @product='电视机'

exec orderlist @orderno,@product

---------------------------有用---------------------------------------

CREATE  TABLE [dbo].[SriaNum] (

    [Num] [int] NOT NULL

)

CREATE  PROC dpIDS_GetSerialNumber

@SerialNumber VARCHAR(9) OUTPUT  -- 指明为输出参数

AS

IF NOT EXISTS(SELECT

            *

        FROM

            SriaNum)     

    BEGIN

        INSERT INTO SriaNum values(1)

    END

ELSE

    BEGIN

        UPDATE SriaNum SET Num=Num+1

    END

SELECT

        @SerialNumber = REPLICATE('0',9-LEN(Num))+CONVERT(VARCHAR(9),Num)  --生成[000000001, 999999999]范围内的流水号

FROM

        SriaNum

DECLARE

@TEST VARCHAR(9)

EXECUTE [dbo].dpIDS_GetSerialNumber @TEST OUTPUT  -- 指明为输出变量

SELECT @TEST AS SERIALNUMBER    -- 获得流水号

-----------------------------------------解决并发问题-------------------------------------------

CREATE  TABLE [dbo].[SriaNum] (

    [Num] [int] NOT NULL

)

-- WAITFOR DELAY '0:0:1'

CREATE  PROC dpIDS_GetSerialNumber

@SerialNumber VARCHAR(9) OUTPUT  -- 指明为输出参数

AS

IF NOT EXISTS(SELECT

            *

        FROM

            SriaNum)

    BEGIN

        INSERT INTO SriaNum values(1)

    END

ELSE

BEGIN TRANSACTION

    BEGIN

        UPDATE SriaNum SET Num=Num+1

    END

WAITFOR DELAY '0:0:3'

COMMIT

SELECT

        @SerialNumber = 'ANS'+REPLICATE('0',6-LEN(Num))+CONVERT(VARCHAR(9),Num)

FROM

        SriaNum

DECLARE

@TEST VARCHAR(9)

EXECUTE [dbo].dpIDS_GetSerialNumber @TEST OUTPUT  -- 指明为输出变量

SELECT @TEST AS SERIALNUMBER    -- 获得流水号

相关文章

  • 一些存储过程

    create table books ( book_id int identity(1,1) primary ...

  • 常见的数据库基础问题

    常见的一些数据库方面的问题: (一)什么是存储过程?有哪些优缺点?存储过程是一些预编译的SQL语句。存储过程可以说...

  • mysql基础(三)

    存储过程和函数 存储过程和函数的引入 存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储...

  • 常见面试题整理--数据库篇

    转自 (一)什么是存储过程?有哪些优缺点? 存储过程是一些预编译的SQL语句。 更加直白的理解:存储过程可以说是一...

  • 存储过程

    一、什么是存储过程 简单来说,存储过程就是一堆sql的组合, 夹杂着一些控制逻辑。 二、存储过程的应用场景 一般用...

  • 项目中Orcale存储过程优化

    今天对之前写的Orcale存储过程做了一些优化,使其变得更加灵活,之前写的存储过程是使用游标存储SQL执行结果,但...

  • Mysql存储过程

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

  • MySQL批量添加数据

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

  • 17 存储过程

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

  • 存储过程

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

网友评论

      本文标题:一些存储过程

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