【SqlServer】SqlServer編程語言T-SQL的存儲過程
阿新 • • 發佈:2018-02-25
null ice 業務 sqlserve 數據庫語言 作用 lte code 傳遞
我們一開始學習數據庫語言的時候就是用一些簡單的insert,select等語法,但是隨著我們學習數據庫的深入,就會發現一些簡單的語法滿足不了我們的要求,比如處理一些業務邏輯,多表關聯的時候,還有就是雖然程序或是簡單的sql語句也會實現其效果,但是性能或是效率會很低。
這時候我們就會用到T-sql中的存儲過程,存儲過程就像C#中的方法一樣,傳遞參數,執行一些操作,返回相應的值。
我們用SQLSERVER2008自帶的AdventureWorks示例數據庫來講解。
首先我們新建一個存儲過程,關鍵字為Procedure,示例代碼:
create procedure proc_Sales_SalesReason
as
begin
select * from Sales.SalesReason;
end
我們新建的一個proc_Sales_SalesReason存儲過程,執行查詢操作,一般存儲過程命名為proc_+名稱,這樣有利於識別。
執行存儲過程示例代碼:
execute proc_Sales_SalesReason
drop procedure proc_Sales_SalesReason --刪除存儲過程
修改存儲過程的話用alter關鍵字。
以上只是簡單的存儲過程,就想無參數的方法一樣,下面是帶參數的示例代碼:
![技術分享圖片](/img/fz.gif)
create procedure proc_Sales_SalesReason
(@SalesReasonID int,
@Name nvarchar(50),
@ReasonType nvarchar(50),
@ModifiedDate datetime)
as
begin
insert into Sales.SalesReason(SalesReasonID, Name, ReasonType, ModifiedDate)
values(@SalesReasonID, @Name, @ReasonType, @ModifiedDate);
end
![技術分享圖片](/img/fz.gif)
這是一個執行插入數據的存儲過程,執行示例代碼:
execute proc_Sales_SalesReason 100,‘text1‘,‘as‘,‘2011-12-12‘;
以上講解的都是一些簡單存儲過程的用法,在這裏只是起到拋磚引玉的作用,大家可以有時間好好研究下,去處理一些復雜的業務邏輯。
下面我做了一個小示例
select :按價格範圍來查詢
要求:如果兩個參數均存在,則表示查詢該指定範圍的內容;
若均不存在,則查詢所有
若@PriceFrom參數存在,則,查詢>=@PriceFrom
@priceTo存在,則<=@priceTo
![技術分享圖片](/img/fz.gif)
create procedure proc_SelectProductsWithPriceRange
(
@PriceFrom money,
@priceTo money
)
as
begin
if @PriceFrom is not null
begin
if @priceTo is not null
begin
select *from dbo.Products
where Price between @PriceFrom and @priceTo;
end
else
begin
select *from dbo.Products
where Price>=@PriceFrom;
end
end;
else
begin
if @priceTo is not null
begin
select *from dbo.Products
where Price<=@priceTo;
end
else
begin
select *from dbo.Products
end
end
end;
![技術分享圖片](/img/fz.gif)
執行存儲過程:
execute proc_SelectProductsWithPriceRange 17,null
原文鏈接:T-sql 存儲過程
【SqlServer】SqlServer編程語言T-SQL的存儲過程