1. 程式人生 > >SQL server數據庫之存儲過程

SQL server數據庫之存儲過程

信息 const null 錯誤 name rain end 任務 tput

在說存儲過程之前我們先說一下SQL server數據庫的一些基本語法

-- 0、 Sql server中的代碼塊
/*
類似於各種開發語言,sql server也具有代碼塊的分割,大部分語言代碼塊用大括號分割({})*/
begin
end
--用於sql server數據庫中的代碼分割

-- 一、 變量的定義、賦值、輸出
declare @a int--定義變量
set @a=5 --變量賦值
print @a --打印變量的值
  
--使用select語句賦值 
--select既可以用於變量賦值也可以用於輸出變量,當輸出變量用時跟我們查詢語句中的相同
declare @user1 nvarchar
(50) select @user1=張三--定義變量 select @user1--輸出變量 -- 二、 表、臨時表、表變量 --創建臨時表 create table #DU_User1 ( [ID] [int] NOT NULL, [Oid] [int] NOT NULL, ); --向臨時表插入記錄 insert into #DU_User1 (ID,Oid) values (100,2); --定義表變量 declare @t table ( id int not null, msg nvarchar(50) null ) ;
--向表變量插入記錄 insert into @t table (ID,msg ) values (100,123); -- 三、 循環 while循環求1到100的和 (sql server中只有while循環) declare @a int declare @sum int set @a=1 set @sum=0 while @a<=100 begin set @sum+=@a set @a+=1 end select @sum -- 四、條件語句 --if,else條件分支 if(1+1=2) begin print end else begin
print end --when then條件分支 declare @today int declare @week nvarchar(3) set @today=3 set @week=case when @today=1 then 星期一 when @today=2 then 星期二 when @today=3 then 星期三 when @today=4 then 星期四 when @today=5 then 星期五 when @today=6 then 星期六 when @today=7 then 星期日 else 值錯誤 end print @week -- 五、遊標 declare @ID int declare @Oid int declare @Login varchar(50) --定義一個遊標 declare user_cur cursor for select ID,Oid,[Login] from ST_User --打開遊標 open user_cur while @@fetch_status=0 begin --讀取遊標 fetch next from user_cur into @ID,@Oid,@Login print @ID --print @Login end close user_cur --摧毀遊標 deallocate user_cur

sql server數據庫中存儲過程可分為兩種:

一、系統存儲過程

系統存儲過程是系統創建的存儲過程,目的在於能夠方便的從系統表中查詢信息或完成與更新數據庫表相關的管理任務或其他的系統管理任務。系統存儲過程主要存儲在master數據庫中,以“sp”下劃線開頭的存儲過程。盡管這些系統存儲過程在master數據庫中,但我們在其他數據庫還是可以調用系統存儲過程。有一些系統存儲過程會在創建新的數據庫的時候被自動創建在當前數據庫中。

--常用的系統存儲過程
exec sp_databases; --查看數據庫
exec sp_tables;        --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--約束
exec sp_stored_procedures;
exec sp_helptext sp_stored_procedures;--查看存儲過程創建、定義語句
exec sp_rename student, stuInfo;--修改表、索引、列的名稱
exec sp_renamedb myTempDB, myDB;--更改數據庫名稱
exec sp_defaultdb master, myDB;--更改登錄名的默認數據庫
exec sp_helpdb;--數據庫幫助,查詢數據庫信息
exec sp_helpdb master;

二、用戶自定義存儲過程

用戶自定義存儲過程是用戶未完成某些業務或功能而封裝好的一條或多條sql語句的對象,一個復雜的數據操作。如果你在前臺處理的話。可能會涉及到多次數據庫連接。但如果你用存儲過程的話。就只有一次。從響應時間上來說有優勢。

下面我們再說一下用戶自定義的存儲過程。

--創建存儲過程語法
create proc | procedure pro_name
    [{@參數} {參數類型}[output], {@參數}{參數類型} [output]] as --SQL_statements
--存儲過程使用
execute pro_name
[{@參數}[output],{@參數} [output]]



--例如:
--定義一個叫proc_name的存儲過程
create procedure proc_name
@a1 int,@p1 int output--變量p1為輸出參數
as
select @p1=count(*) from table where id=@a1

--使用proc_name這個存儲過程
declare @a1 int ,@p1 int
set @a1=1
execute proc_name @a1,@p1 output

SQL server數據庫之存儲過程