sqlserver存储过程

1、什么是存储过程?

  存储过程可以理解为是一个函数,函数中可以有参数可以无参数,函数是被调用的时候才会被执行,函数中封装了一组sql语句。

2、存储过程的分类?

  不带参数的、待参数的、带返回值的

3、简单代码实例

--创建测试数据
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,'司马迁');

select * from books;

--创建无参数的存储过程
create procedure getAllBooks
as
select * from books;
--调用无参存储过程
exec getAllbooks;

--创建带一个参数的存储过程
create procedure getBookById(@BookId int)
as
select * from books where book_id=@BookId;

exec getBookById 2;

--创建带两个参数的存储过程
create procedure getBookByParms
(
@bookid int,
@auth varchar(20)
)
as
select * from books where book_id=@bookid and book_auth=@auth;

exec getBookByParms 2,'金庸';

--创建带返回值的存储过程
create procedure getBookid

(
@auth varchar(20),--输入参数
@bookid int output--返回值
)as
select @bookid=book_id from books where book_auth=@auth;

declare @id int--声明一个变量,接受存储过程返回值

exec getBookid '金庸',@id output
select @id as bookid;--给变量ID取个名字叫bookid
--上面三行同时执行,这里涉及到变量的作用域。

posted @   尤念  阅读(337)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示