MSSQL資料庫 儲存過程學習

2021-03-31 08:56:31 字數 1202 閱讀 1652

這個例子裡面我們從兩個表中取出頭兩行,然後合併到乙個表中。

在現實中我們常常會遇到這樣的情況,在乙個資料庫中存在兩個表,假設表1儲存著公司個產品本季度銷售資訊,表2儲存著公司本季度欠款金額情況。在乙個頁面中我們想把這兩個資訊顯示出來。通常的做法是在程式中進行兩次sql查詢,返回兩個結果集,在分別顯示出來,非常麻煩。

下面是實現這個功能的**:

create procedure test

asset nocount on --指示儲存過程不返回查詢影響的行數

declare @col1c varchar(20),@col2c varchar(20), @index int

set @index = 1

create table #tmptbl --建立乙個臨時表,用於儲存我們的結果

(colid int identity(1,1) primary key clustered,

col1 varchar(20),

col2 varchar(20)

)declare cur1 cursor for select  top 2 customerid from orders

declare cur2 cursor for select top 2 regiondescription from region

open cur1

open cur2

fetch cur2 into @col2c

fetch cur1 into @col1c

while @@fetch_status = 0

begin

insert into #tmptbl (col1, col2) values (@col1c, @col2c)

fetch next from cur1 into @col1c

fetch next from cur2 into @col2c

endclose cur1

close cur2

deallocate cur1

deallocate cur2

select * from #tmptbl

drop table #tmptbl

go說明:

@@fetch_status,返回被fetch語句執行的最後游標狀態。

返回值:0-fetch語句執行成功

1-fetch語句失敗,或此行不再結果集中。

2-被提取的行不存在。

MSSQL資料庫 儲存過程學習

這個例子裡面我們從兩個表中取出頭兩行,然後合併到乙個表中。在現實中我們常常會遇到這樣的情況,在乙個資料庫中存在兩個表,假設表1儲存著公司個產品本季度銷售資訊,表2儲存著公司本季度欠款金額情況。在乙個頁面中我們想把這兩個資訊顯示出來。通常的做法是在程式中進行兩次sql查詢,返回兩個結果集,在分別顯示出...

MSSQL資料庫巢狀儲存過程的事務控制

在mssql規範中,支援事務巢狀,不過在巢狀呼叫子儲存過程時,要回滾事務,需把 error傳給最外層事務。舉例如下 drop table testtb gocreate table testtb id int,name varchar 2 go 子過程 drop proc proc insert s...

資料庫儲存過程學習筆記

oracle10gr2 學了下資料庫儲存過程,總結一下。對剛才學習有所交代。儲存過程結構 create or replace procedure 過程名 引數1,引數2,引數3.as資料定義 i number begin 儲存過程體 end 一 引數1,引數2,引數3 引數型別有 in 值傳遞,預設...