SQL server資料庫之儲存過程

2021-08-21 17:34:54 字數 3507 閱讀 1042

在說儲存過程之前我們先說一下sql server資料庫的一些基本語法

-- 0、 sql server中的**塊

/*類似於各種開發語言,sql server也具有**塊的分割,大部分語言**塊用大括號分割({})*/

begin

end--用於sql server資料庫中的**分割

-- 1、 變數的定義、賦值、輸出

declare @a int--定義變數

set @a=5 --變數賦值

print @a --列印變數的值

--使用select語句賦值

--select既可以用於變數賦值也可以用於輸出變數,當輸出變數用時跟我們查詢語句中的相同

declare @user nvarchar(50)

select @user='李明'--定義變數

select @user--輸出變數

-- 2、 表、臨時表、表變數

--建立臨時表

create table #du_user

( [id] [int] not null,

[oid] [int] not null,

); --向臨時表插入記錄

insert into #du_user (id,oid) values (100,2);

--定義表變數

declare @t_able table

( id int not null,

msg nvarchar(50) null

) ;--向表變數插入記錄

insert into @t_able(id,msg ) values (100,'123');

-- 3、 迴圈 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

endselect @sum

-- 4、條件語句

--if,else條件分支

if(1+1=2)

begin

print 'true'

endelse

begin

print 'false'

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 '輸入有誤'

endprint @week

-- 5、游標

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

endclose 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為輸出引數

asselect @p1=count(*) from table where id=@a1

--使用proc_name這個儲存過程

declare @a1 int ,@p1 int

set @a1=1

execute proc_name @a1,@p1 output

資料庫之SQLServer

sqlserver更改身份驗證方式 sqlserver中char varchar nchar nvarchar的區別 1 定義 char 固定長度,儲存ansi字元,不足的補英文半形空格。nchar 固定長度,儲存unicode字元,不足的補英文半形空格 varchar 可變長度,儲存ansi字元,...

SQL SERVER資料庫開發之儲存過程的應用

標 題 sql server資料庫開發之儲存過程的應用 作 者 栽培者 日 期 2005 12 27 序可能有不少朋友使用sql server做開發也已經有段日子,但還沒有或者很少在專案中使用儲存過程,或許有些朋友認為根本沒有必要使用儲存過程等等。其實當你乙個專案做完到了維護階段時,就會發現儲存過程...

SQL SERVER資料庫開發之儲存過程應用

序 可能有不少朋友使用sql server做開發也已經有段日子,但還沒有或者很少在專案中使用儲存過程,或許有些朋友認為根本沒有必要使用儲存過程等等。其實當你乙個專案做完到了維護階段時,就會發現儲存過程給我們帶來了好處了,修改方便,不能去改我們的應用程式,只需要改儲存過程的內容,而且還可以使我們的程式...