這個例子裡面我們從兩個表中取出頭兩行,然後合併到乙個表中。
在現實中我們常常會遇到這樣的情況,在乙個資料庫中存在兩個表,假設表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 值傳遞,預設...