MSSQL資料庫:預存程序學習

來源:互聯網
上載者:User
預存程序|資料|資料庫
  這個例子裡面我們從兩個表中取出頭兩行,然後合并到一個表中。

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

  下面是實現這個功能的代碼:

  CREATE PROCEDURE test
  AS
   SET 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
    END
   CLOSE cur1
   CLOSE cur2
   DEALLOCATE cur1
   DEALLOCATE cur2
   SELECT * FROM #tmptbl
   DROP TABLE #tmptbl
  GO

  說明:

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

  傳回值:0-FETCH語句執行成功
      1-FETCH語句失敗,或此行不再結果集中。
      2-被提取的行不存在。


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。