各位大蝦,我資料庫里有一個表,現在的問題是用什么命令可以得到這樣一個資料:carid:車牌、remark:臨時車或VIP車、time:停放總時長(出場時間減進場時間) add:地址 ;因為本人水平有限,煩請高手幫助,解決步驟盡量詳細
dbo.re
carid remark time add
川A0D3U7 臨時車 2016/11/6 14:05:14 金家渡入口1
川A0D3U7 臨時車 2016/11/6 14:43:45 莫干山出口
川A0M2M3 臨時車 2016/11/11 17:48:53 莫干山入口
川A0M2M3 臨時車 2016/11/11 20:10:56 莫干山出口
川A0S953 臨時車 2016/11/5 15:01:39 莫干山出口
川A0Y91Z VIP車 2016/11/1 6:56:20 莫干山出口
川A0Y91Z VIP車 2016/11/1 21:48:01 莫干山入口
川A0Y91Z VIP車 2016/11/2 6:53:31 莫干山出口
川A0Y91Z VIP車 2016/11/2 21:33:17 莫干山入口
川A0Y91Z VIP車 2016/11/3 5:04:25 金家渡入口1
川A0Y91Z VIP車 2016/11/3 6:54:34 莫干山出口
川A0Y91Z VIP車 2016/11/3 17:40:05 金家渡入口1
uj5u.com熱心網友回復:
用sql陳述句select選出資料uj5u.com熱心網友回復:
版主大人,能給個具體的陳述句嗎uj5u.com熱心網友回復:
ADO操作資料庫uj5u.com熱心網友回復:
select 欄位1,欄位2....from 表名uj5u.com熱心網友回復:
訪問和更改關系資料游標
關系資料庫中的操作會對整個行集產生影響。由 SELECT 陳述句回傳的行集包括所有滿足該陳述句 WHERE 子句中條件的行。由陳述句所回傳的這一完整的行集被稱為結果集。應用程式,特別是互動式聯機應用程式,并不總能將整個結果集作為一個單元來有效地處理。這些應用程式需要一種機制以便每次處理一行或一部分行。游標就是提供這種機制的結果集擴展。
游標通過以下方式擴展結果處理:
允許定位在結果集的特定行。
從結果集的當前位置檢索一行或多行。
支持對結果集中當前位置的行進行資料修改。
為由其他用戶對顯示在結果集中的資料庫資料所做的更改提供不同級別的可見性支持。
提供腳本、存盤程序和觸發器中使用的訪問結果集中的資料的 Transact-SQL 陳述句。
請求游標
Microsoft? SQL Server? 2000 支持兩種請求游標的方法:
Transact-SQL
對根據 SQL-92 游標語法制定的游標,Transact-SQL 語言支持使用它們的語法。
資料庫應用程式編程介面(API)游標函式
SQL Server 支持這些資料庫 API 的游標功能:
ADO(Microsoft ActiveX? 資料物件)
OLE DB
ODBC(開放式資料庫連接)
DB-Library
應用程式不能混合使用這兩種請求游標的方法。已經使用 API 指定游標行為的應用程式不能再執行 Transact-SQL DECLARE CURSOR 陳述句請求一個 Transact-SQL 游標。只有在將所有 API 游標特性均設回默認值后,應用程式才可以執行 DECLARE CURSOR。
如果 Transact-SQL 和 API 游標均未被請求,則默認情況下 SQL Server 將一個完整的結果集回傳給應用程式,這個結果集稱為默認結果集。
游標行程
Transact-SQL 游標和 API 游標有不同的語法,但下列一般行程可用于所有 SQL Server 游標:
把游標與 Transact-SQL 陳述句的結果集相關聯,并且定義游標的特征,如是否能夠更新游標中的行。
執行 Transact-SQL 陳述句以填充游標。
檢索想要查看的游標中的行。從游標中檢索一行或多行的操作稱為提取。執行一系列的提取操作以向前或向后檢索行的操作稱為滾動。
根據需要,對游標中當前位置的行執行修改操作(更新或洗掉)。
關閉游標。
?1988-2000 Microsoft Corporation。保留所有權利。
uj5u.com熱心網友回復:
訪問和更改關系資料
Transact-SQL 游標
Transact-SQL 游標主要用在存盤程序、觸發器和 Transact-SQL 腳本中,它們使結果集的內容對其它 Transact-SQL 陳述句同樣可用。
在存盤程序或觸發器中使用 Transact-SQL 游標的典型行程為:
宣告 Transact-SQL 變數包含游標回傳的資料。為每一結果集列宣告一個變數。宣告足夠大的變數以保存由列回傳的值,并宣告可從列資料型別以隱性方式轉換得到的資料型別。
使用 DECLARE CURSOR 陳述句把 Transact-SQL 游標與一個 SELECT 陳述句相關聯。DECLARE CURSOR 陳述句同時定義游標的特征,比如游標名稱以及游標是否為只讀或只進特性。
使用 OPEN 陳述句執行 SELECT 陳述句并生成游標。
使用 FETCH INTO 陳述句提取單個行,并把每列中的資料轉移到指定的變數中。然后,其它 Transact-SQL 陳述句可以參考這些變數來訪問已提取的資料值。Transact-SQL 不支持提取行塊。
結束游標時,使用 CLOSE 陳述句。關閉游標可以釋放某些資源,比如游標結果集和對當前行的鎖定,但是如果重新發出一個 OPEN 陳述句,則該游標結構仍可用于處理。由于游標仍然存在,此時還不能重新使用游標的名稱。DEALLOCATE 陳述句則完全釋放分配給游標的資源,包括游標名稱。在游標被釋放后,必須使用 DECLARE 陳述句來重新生成游標。
監視 Transact-SQL 游標的活動
可以使用 sp_cursor_list 系統存盤程序來獲得對當前連接可見的游標串列,使用sp_describe_cursor、sp_describe_cursor_columns和 sp_describe_cursor_tables 來確定游標的特征。
在游標打開后,@@CURSOR_ROWS 函式或由 sp_cursor_list 或 sp_describe_cursor 回傳的 cursor_rows 列會指出游標中的行數。
在每個 FETCH 陳述句執行之后,@@FETCH_STATUS 更新以反映最后一次提取的狀態。也可以從由 sp_describe_cursor 回傳的 fetch_status 列中獲取該狀態資訊。@@FETCH_STATUS 報告游標中的狀態,比如超出第一行和最后一行的提取。@@FETCH_STATUS 對于連接來說是全域性的,并在連接游標打開時由每次提取進行重置。如果必須在以后了解狀態,就需要在連接中執行另外一個陳述句之前,把 @@FETCH_STATUS 保存在一個用戶變數中。即使下一陳述句不是 FETCH,也可能是 INSERT、UPDATE 或 DELETE 這些陳述句,它們能夠激發包含可重置 @@FETCH_STATUS 的 FETCH 陳述句的觸發器。sp_describe_cursor 回傳的 fetch_status 列對于指定的游標來說是確定的,不受那些參考其它游標的 FETCH 陳述句的影響,但 sp_describe_cursor 會受參考相同游標的 FETCH 陳述句的影響,因此使用時必須注意。
完成 FETCH 后,游標將定位在已提取的行上。被提取的行稱為當前行。如果游標沒有宣告為只讀游標,就可以執行帶有 WHERE CURRENT OF cursor_name 子句的 UPDATE 或 DELETE 陳述句來修改當前行。
由 DECLARE CURSOR 陳述句賦給 Transact-SQL 游標的名稱可以是全域或區域的。全域游標的名稱可由任何位于同一連接上的批處理、存盤程序或觸發器參考。區域游標名稱不能在宣告游標的批處理、存盤程序或觸發器之外被參考。觸發器和存盤程序中的區域游標因而可以避免來自存盤程序或觸發器外部的無意參考。
使用游標變數
Microsoft? SQL Server? 2000 也支持 cursor 資料型別的變數。游標可以有兩種方法與一個 cursor 變數相關聯:
/* Use DECLARE @local_variable, DECLARE CURSOR and SET. */
DECLARE @MyVariable CURSOR
DECLARE MyCursor CURSOR FOR
SELECT LastName FROM Northwind.dbo.Employees
SET @MyVariable = MyCursor
/* Use DECLARE @local_variable and SET */
DECLARE @MyVariable CURSOR
SET @MyVariable = CURSOR SCROLL KEYSET FOR
SELECT LastName FROM Northwind.dbo.Employees
當游標與 cursor 變數相關聯之后,在 Transact-SQL 游標陳述句中就可以使用 cursor 變數代替游標名稱。存盤程序輸出引數也可指派為 cursor 資料型別,并與一個游標相關聯。這就允許存盤程序有節制地展示其區域游標。
參考 Transact-SQL 游標
Transact-SQL 游標名稱和變數只能由 Transact-SQL 陳述句參考,而不能由 OLE DB、ODBC、ADO 和 DB-Library 的 API 函式參考。例如,如果要使用 DECLARE CURSOR 和 OPEN 陳述句生成一個 Transact-SQL 游標,就無法使用 SQLFetch 或 SQLFetchScroll 函式來從 Transact-SQL 游標中提取行。需要游標處理而又使用這些 API 的應用程式應該使用資料庫 API 中內建的游標支持代替 Transact-SQL 游標。
通過使用 FETCH 并系結由 FETCH 回傳給程式變數的每一列,可以在應用程式中使用 Transact-SQL 游標。Transact-SQL FETCH 不支持批處理,因此,這是將資料回傳給應用程式的效率最低的方法。每提取一行均需往返服務器一次。使用內建在資料庫 API 中的游標功能更為有效,可進行多行提取。
當包含在存盤程序和觸發器中時,Transact-SQL 游標極其有效。這是因為所有操作都編譯到服務器上的一個執行計劃內,不存在與行提取有關的網路流量。
請參見
@@FETCH_STATUS
FETCH
CLOSE
游標函式
OPEN
DEALLOCATE
WHERE
DECLARE CURSOR
Transact-SQL 游標名稱的作用域
?1988-2000 Microsoft Corporation。保留所有權利。
uj5u.com熱心網友回復:
謝謝各位老師的幫助與解答轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/115425.html
標籤:數據庫
下一篇:執行緒會影響定時器嗎
