遊標是系統為使用者開設的一個數據緩衝區,存放SQL語句的執行結果。每個遊標區都有一個名字。使用者可以用SQL語句逐一從遊標中獲取記錄,並賦給主變數,交由主語言進一步處理。主語言是面向記錄的,一組主變數一次只能存放一條記錄。僅使用主變數並不能完全滿足SQL語句嚮應用程式輸出資料的要求。嵌入式SQL引入了遊標的概念,用來協調這兩種不同的處理方式。在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句程式碼往往使用SELECT INSERT 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?這時我們就會使用遊標。-----------------------------------------------------------使用遊標會降低執行效率,平時儘可能不要用 declare @column1 varchar(10) declare @column2 varchar(10) declare cursor1 cursor for select column1, column2 from tablename --宣告遊標(用select語句,可以透過where等語句限定遊標取的結果集) open cursor1 --開啟遊標 fetch next from cursor1 into @column1, @column2 --取遊標的值到變數 while (@@fetch_status=0) --有記錄的話 begin --處理 fetch next from cursor1 into @column1, @column2 --取下一個 end close cursor1 --關閉遊標 deallocate cursor1 --釋放遊標
遊標是系統為使用者開設的一個數據緩衝區,存放SQL語句的執行結果。每個遊標區都有一個名字。使用者可以用SQL語句逐一從遊標中獲取記錄,並賦給主變數,交由主語言進一步處理。主語言是面向記錄的,一組主變數一次只能存放一條記錄。僅使用主變數並不能完全滿足SQL語句嚮應用程式輸出資料的要求。嵌入式SQL引入了遊標的概念,用來協調這兩種不同的處理方式。在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句程式碼往往使用SELECT INSERT 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?這時我們就會使用遊標。-----------------------------------------------------------使用遊標會降低執行效率,平時儘可能不要用 declare @column1 varchar(10) declare @column2 varchar(10) declare cursor1 cursor for select column1, column2 from tablename --宣告遊標(用select語句,可以透過where等語句限定遊標取的結果集) open cursor1 --開啟遊標 fetch next from cursor1 into @column1, @column2 --取遊標的值到變數 while (@@fetch_status=0) --有記錄的話 begin --處理 fetch next from cursor1 into @column1, @column2 --取下一個 end close cursor1 --關閉遊標 deallocate cursor1 --釋放遊標