学习存储过程(1)
存儲過程說白了就是一堆 SQL 的合并。中間加了點邏輯控制。
用戶自定義存儲過程create proc | procedure pro_name
[{@參數數據類型} [=默認值] [output],
{@參數數據類型} [=默認值] [output],
....
]
as
SQL_statements
創建存儲過程
Create procedure sp_name //sp_name 自己給存儲過程去的名稱
Begin
……
End
?
Create Proc dbo.存儲過程名
存儲過程參數
AS
執行語句
RETURN
執行存儲過程
GO
Eg:
-- 要創建存儲過程的數據庫
Use Test
-- 判斷要創建的存儲過程名是否存在
if Exists(Select name From sysobjects Where name='csp_AddInfo' And
?
type='P')
-- 刪除存儲過程
Drop Procedure dbo.csp_AddInfo
Go
?
?
-- 創建存儲過程
Create Proc dbo.csp_AddInfo
-- 存儲過程參數
@UserName varchar(16),
@Pwd varchar(50),
@Age smallint,
@Sex varchar(6)
AS
-- 存儲過程語句體
insert into Uname (UserName,Pwd,Age,Sex)
values (@UserName,@Pwd,@Age,@Sex)
RETURN
-- 執行
GO
?
-- 執行存儲過程
EXEC csp_AddInfo 'Junn.A','123456',20,'男'
?
--創建存儲過程
if (exists (select * from sys.objects where name = 'proc_get_student'))
drop proc proc_get_student
go
create proc proc_get_student
as
select * from student;
--調用、執行存儲過程
exec proc_get_student;
?
存儲過程說白了就是一堆 SQL 的合并。中間加了點邏輯控制。
存儲過程運行流程
創建不帶參數存儲過程
--創建存儲過程
if (exists (select * from sys.objects where name = 'proc_get_student'))
drop proc proc_get_student
create proc proc_get_student
as
select * from student;
結果:
?
--調用、執行存儲過程
exec proc_get_student;
查詢結果:
?
帶參存儲過程
if (object_id('proc_find_stu', 'P') is not null)
drop proc proc_find_stu
go
create proc proc_find_stu(@startId int, @endId int)
as
select * from student where id between @startId and @endId
go
exec proc_find_stu 2, 4;
執行結果:
2 趙姳 17 男
3 張曼 18 女
4 張立 19 女
?
轉載于:https://www.cnblogs.com/guangzhou11/p/9025132.html
總結
- 上一篇: 新技能get!判断盒子的实际大小及位置。
- 下一篇: ElasticSearch 5.5 离线