當前位置:首頁 » 編程語言 » sqlscroll
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlscroll

發布時間: 2022-05-15 17:06:15

sql語言定義游標時加不加scroll有什麼區別

游標一般用於把通過腳本得到的結果集的內容在用於其它的SQL語句中。但是游標執行會影響腳本執行速度,所以使用時請慎重。 在存儲過程或觸發器中使用 SQL 游標的典型過程為: 聲明SQL 變數包含游標返回的數據。為每個結果集列聲明一個變數。

② sql如何使用游標查詢指定行記錄

可以
不過不用游標也可以

select * from (select *,row_number() over(order by 排序列) as rownum from table) a
where rownum>=n and rownum<=m

③ 分頁查詢的sql 語句(參數1,參數2)怎麼寫

你說的應該是 利用SQL的游標存儲過程 來分頁的形式
代碼如下:
create procere fenye
@sqlstr nvarchar(4000), --查詢字元串
@currentpage int, --第N頁
@pagesize int --每頁行數
as
set nocount on
declare @P1 int, --P1是游標的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

不過這個種存儲過程分頁的方法效率比較差
建議你直接用代碼進行分頁
或者 利用SELECT TOP分頁
代碼:
select top 10 * from [order details]
where orderid>all(select top 10 orderid from [order details] order by orderid)
order by orderid

④ 分頁查詢的sql 語句(參數1,參數2)怎麼寫

你說的應該是
利用SQL的游標存儲過程
來分頁的形式
代碼如下:
create
procere
fenye
@sqlstr
nvarchar(4000),
--查詢字元串
@currentpage
int,
--第N頁
@pagesize
int
--每頁行數
as
set
nocount
on
declare
@P1
int,
--P1是游標的id
@rowcount
int
exec
sp_cursoropen
@P1
output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount
output
select
ceiling(1.0*@rowcount/@pagesize)
as
總頁數--,@rowcount
as
總行數,@currentpage
as
當前頁
set
@currentpage=(@currentpage-1)*@pagesize+1
exec
sp_cursorfetch
@P1,16,@currentpage,@pagesize
exec
sp_cursorclose
@P1
set
nocount
off
不過這個種存儲過程分頁的方法效率比較差
建議你直接用代碼進行分頁
或者
利用SELECT
TOP分頁
代碼:
select
top
10
*
from
[order
details]
where
orderid>all(select
top
10
orderid
from
[order
details]
order
by
orderid)
order
by
orderid

⑤ 讀取SQL資料庫信息並逐條向上滾動公告顯示 我想顯示前十條後循環 現在我實現了一條 其他的不知怎樣搞

你那語句不對
應該是:
<marquee
direction="up"
scrollamount="2"
height="260"
onMouseOver="this.stop();"
onMouseOut="this.start();"><%Call
List_Pin("NewsData2","A0001",12,33,0)%></marquee>
這里的<%Call
List_Pin("NewsData2","A0001",12,33,0)%>可以根據自己的情況修改。

⑥ SQL中的指針和游標怎麼理解

windows或DOS的「游標」不同,MS-SQL的游標是一種臨時的資料庫對象,既對可用來旋轉儲存在系統永久表中的數據行的副本,也可以指向儲存在系統永久表中的數據行的指針。
游標為您提供了在逐行的基礎上而不是一次處理整個結果集為基礎的操作表中數據的方法。 1.如何使用游標 1)定義游標語句 Declare <游標名> Cursor For
2)創建游標語句 Open <游標名>
3)提取游標列值、移動記錄指針 Fetch <列名列表> From <游標名> [Into <變數列表>]
4)使用@@Fetch_Status利用While循環處理游標中的行
5)刪除游標並釋放語句 Close <游標名>/Deallocate <游標名>
6)游標應用實例 --定義游標
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
--創建游標
Open cur_Depart
--移動或提取列值
Fetch From cur_Depart into @DeptID,@DeptName
--利用循環處理游標中的列值
While @@Fetch_Status=0
Begin
Print @DeptID,@DeptName
Fetch From cur_Depart into @DeptID,@DeptName
End
--關閉/釋放游標
Close cur_Depart
Deallocate cur_Depart2.語句的詳細及注意 1)定義游標語句 Declare <游標名> [Insensitive] [Scroll] Cursor
For <Select 語句> [FOR {Read Only | Update [ OF <列名列表>]}] Insensitive DBMS創建查詢結果集數據的臨時副本(而不是使用直接引用資料庫表中的真實數據行中的列)。游標是Read Only,也就是說不能修改其內容或底層表的內容; Scroll 指定游標支持通過使用任意Fetch 選項(First Last Prior Next Relative Absolute)選取它的任意行作為當前行。如果此項省略,則游標將只支持向下移動單行(即只支持游標的Fetch Next); Select語句 定義游標結果集的標准 SELECT 語句。在游標聲明的 <Select語句>內不允許使用關鍵字 COMPUTE、COMPUTE BY、FOR BROWSE 和 INTO; Read Only 防止使用游標的用戶通過更新數據或刪除行改變游標的內容; Update 創建可更新游標且列出值能被更新的游標列。如果子句中列入了任意列,則只有被列入的列才能被更新。如果Declare Cursor語句中只指定的UPDATE(沒有列名列表),則游標將允許更新它的任何或所有列。
Declare cur_Depart Cursor
For Select * From Department For Update OF cDeptID,cDeptName 2)提取游標列值、移動記錄指針語句 Fetch [Next | Prior | First | Last | {Absolute <行號>} | {Relative <行號>}]
From <游標名> [Into <變數列表……>] 每次執行Fetch語句時,DBMS移到游標中的下一行並把游標中的列值獲取到Into中列出的變數中。因此Fetch語句的Into子句中列出的變數必須與游標定義中Select 語句中的列表的類型與個數相對應; 僅當定義游標時使用Scroll參數時,才能使用Fetch語句的行定位參數(First Last Prior Next Relative Absolute);如果Fetch語句中不包括參數Next | Prior | First | Last,DBMS將執行默認的Fetch Next; Next 向下、向後移動一行(記錄); Prior 向上、向前移動一行(記錄); First 移動至結果集的第一行(記錄); Last 移動至結果集的最後一行(記錄); Absolute n 移動到結果集中的第n行。如果n是正值,DBMS從結果集的首部向後或向下移動至第n行;如果n是負數,則DBMS從結果集的底部向前或向上移動n行;
Fetch Absolute 2 From cur_Depart Into @DeptID,@DeptName Relative n 從指針的當前位置移動n行。如果n是正值,DBMS將行指針向後或向下移動至第n行;如果n是負數,則DBMS將行指針向前或向上移動n行;
Fetch Relative 2 From cur_Depart Into @DeptID,@DeptName 3)基於游標的定位DELETE/UPDATE語句 如果游標是可更新的(也就是說,在定義游標語句中不包括Read Only 參數),就可以用游標從游標數據的源表中DELETE/UPDATE行,即DELETE/UPDATE基於游標指針的當前位置的操作;
舉例: --刪除當前行的記錄
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
Open cur_Depart
Fetch From cur_Depart into @DeptID,@DeptName
Delete From Department Where CURRENT OF cur_Depart --更新當前行的內容
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
Open cur_Depart
Fetch From cur_Depart into @DeptID,@DeptName
Update Department Set cDeptID=』2007』 + @DeptID Where CURRENT OF cur_Depart3.游標使用技巧及注意 1)利用Order By改變游標中行的順序。此處應該注意的是,只有在查詢的中Select 子句中出現的列才能作為Order by子句列,這一點與普通的Select語句不同;
2)當語句中使用了Order By子句後,將不能用游標來執行定位DELETE/UPDATE語句;如何解決這個問題,首先在原表上創建索引,在創建游標時指定使用此索引來實現;例如:
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department With INDEX(idx_ID)
For Update Of cDeptID,cDeptName
通過在From子句中增加With Index來實現利用索引對表的排序;
3)在游標中可以包含計算好的值作為列;
4)利用@@Cursor_Rows確定游標中的行數;

⑦ Sql中的游標是幹嘛的

游標(cursor)是結果集的邏輯擴展,可以看做指向結果集的一個指針,通過使用游標,應用程序可以逐行訪問並處理結果集。

ResultSet對象用於接收查詢結果,next()方法用於判斷結果集是否為空,相當於指針,指向結果集下一個數據。

(7)sqlscroll擴展閱讀:

游標的生命周期包含有五個階段:聲明游標、打開游標、讀取游標數據、關閉游標、釋放游標。

1、聲明游標語法

DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]

[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]

2、打開游標語法

open [ Global ] cursor_name | cursor_variable_name

3、讀取游標數據語法

Fetch[ [Next|prior|Frist|Last|Absoute n|Relative n ]from ][Global] cursor_name[into @variable_name[,....]]

4、關閉游標語法

close [ Global ] cursor_name | cursor_variable_name

5、釋放游標語法

deallocate cursor_name

⑧ jsp讀SQL資料庫信息並逐條向上滾動公告顯示

<table
width="250"
id="mytalbe"
style="background:
url('images/b.gif')
">
<%
WebApplicationContext
wac
=
WebApplicationContextUtils
.getWebApplicationContext(this.getServletContext());
INoticeboardService<Noticeboard>
noticeboardSer
=
(INoticeboardService)
wac
.getBean("noticeboardService");
List<Noticeboard>
noticeboradList
=
noticeboardSer
.list("From
Noticeboard
as
n
order
by
id
desc");
//此處你取出的是
第1條數據
所以只顯示一條,顯示多條
應該將此注釋
//Noticeboard
nb
=
noticeboradList.get(0);
%>
<tr>
<td>
<marquee
direction="up"
height="300"
onmouseout="this.start()"
onMouseOver="this.stop()"
scrollamount="2">
<%
//循環將消息顯示
for(int
i=0;i<noticeboradList.size();i++){
Noticeboard
nb
=
noticeboradList.get(i);
%>
<%=nb.getContent()%>
<br/>
<%
}
%>
</marquee>
</td>
</tr>
</table>

⑨ SQL FETCH

FETCH (Transact-SQL)

通過 Transact-SQL 伺服器游標檢索特定行。

Transact-SQL 語法約定

語法

FETCH
[ [ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE { n | @nvar }
| RELATIVE { n | @nvar }
]
FROM
]
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name }
[ INTO @variable_name [ ,...n ] ] 參數
NEXT
緊跟當前行返回結果行,並且當前行遞增為返回行。如果 FETCH NEXT 為對游標的第一次提取操作,則返回結果集中的第一行。NEXT 為默認的游標提取選項。

PRIOR
返回緊鄰當前行前面的結果行,並且當前行遞減為返回行。如果 FETCH PRIOR 為對游標的第一次提取操作,則沒有行返回並且游標置於第一行之前。

FIRST
返回遊標中的第一行並將其作為當前行。

LAST
返回遊標中的最後一行並將其作為當前行。

ABSOLUTE { n | @nvar}
如果 n 或 @nvar 為正,則返回從游標頭開始向後的第 n 行,並將返回行變成新的當前行。如果 n 或 @nvar 為負,則返回從游標末尾開始向前的第 n 行,並將返回行變成新的當前行。如果 n 或 @nvar 為 0,則不返回行。n 必須是整數常量,並且 @nvar 的數據類型必須為 smallint、tinyint 或 int。

RELATIVE { n | @nvar}
如果 n 或 @nvar 為正,則返回從當前行開始向後的第 n 行,並將返回行變成新的當前行。如果 n 或 @nvar 為負,則返回從當前行開始向前的第 n 行,並將返回行變成新的當前行。如果 n 或 @nvar 為 0,則返回當前行。在對游標進行第一次提取時,如果在將 n 或 @nvar 設置為負數或 0 的情況下指定 FETCH RELATIVE,則不返回行。n 必須是整數常量,@nvar 的數據類型必須為 smallint、tinyint 或 int。

GLOBAL
指定 cursor_name 是指全局游標。

cursor_name
要從中進行提取的打開的游標的名稱。如果全局游標和局部游標都使用 cursor_name 作為它們的名稱,那麼指定 GLOBAL 時,cursor_name 指的是全局游標;未指定 GLOBAL 時,cursor_name 指的是局部游標。

@ cursor_variable_name
游標變數名,引用要從中進行提取操作的打開的游標。

INTO @variable_name[ ,...n]
允許將提取操作的列數據放到局部變數中。列表中的各個變數從左到右與游標結果集中的相應列相關聯。各變數的數據類型必須與相應的結果集列的數據類型匹配,或是結果集列數據類型所支持的隱式轉換。變數的數目必須與游標選擇列表中的列數一致。

備注
如果 SCROLL 選項未在 ISO 樣式的 DECLARE CURSOR 語句中指定,則 NEXT 是唯一支持的 FETCH 選項。如果在 ISO 樣式的 DECLARE CURSOR 語句中指定了 SCROLL 選項,則支持所有 FETCH 選項。

如果使用 Transact-SQL DECLARE 游標擴展插件,則應用下列規則:

如果指定了 FORWARD_ONLY 或 FAST_FORWARD,則 NEXT 是唯一受支持的 FETCH 選項。

如果未指定 DYNAMIC、FORWARD_ONLY 或 FAST_FORWARD 選項,並且指定了 KEYSET、STATIC 或 SCROLL 中的某一個,則支持所有 FETCH 選項。

DYNAMIC SCROLL 游標支持除 ABSOLUTE 以外的所有 FETCH 選項。

@@FETCH_STATUS 函數報告上一個 FETCH 語句的狀態。相同的信息記錄在由 sp_describe_cursor 返回的游標中的 fetch_status 列中。這些狀態信息應該用於在對由 FETCH 語句返回的數據進行任何操作之前,以確定這些數據的有效性。有關詳細信息,請參閱 @@FETCH_STATUS (Transact-SQL)。

許可權
FETCH 許可權默認授予任何有效的用戶。

示例
A. 在簡單的游標中使用 FETCH
以下示例為 Person.Contact 表中姓氏以字母 B 開頭的行聲明了一個簡單的游標,並使用 FETCH NEXT 逐個提取這些行。FETCH 語句以單行結果集形式返回在 DECLARE CURSOR 中指定的列的值。

復制代碼
USE AdventureWorks
GO
DECLARE contact_cursor CURSOR FOR
SELECT LastName FROM Person.Contact
WHERE LastName LIKE 'B%'
ORDER BY LastName

OPEN contact_cursor

-- Perform the first fetch.
FETCH NEXT FROM contact_cursor

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM contact_cursor
END

CLOSE contact_cursor
DEALLOCATE contact_cursor
GOB. 使用 FETCH 將值存入變數
以下示例與示例 A 相似,但 FETCH 語句的輸出存儲於局部變數而不是直接返回到客戶端。PRINT 語句將變數組合成單一字元串並將其返回到客戶端。

復制代碼
USE AdventureWorks
GO
-- Declare the variables to store the values returned by FETCH.
DECLARE @LastName varchar(50), @FirstName varchar(50)

DECLARE contact_cursor CURSOR FOR
SELECT LastName, FirstName FROM Person.Contact
WHERE LastName LIKE 'B%'
ORDER BY LastName, FirstName

OPEN contact_cursor

-- Perform the first fetch and store the values in variables.
-- Note: The variables are in the same order as the columns
-- in the SELECT statement.

FETCH NEXT FROM contact_cursor
INTO @LastName, @FirstName

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN

-- Concatenate and display the current values in the variables.
PRINT 'Contact Name: ' + @FirstName + ' ' + @LastName

-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM contact_cursor
INTO @LastName, @FirstName
END

CLOSE contact_cursor
DEALLOCATE contact_cursor
GOC. 聲明 SCROLL 游標並使用其他 FETCH 選項
以下示例創建一個 SCROLL 游標,使其通過 LAST、PRIOR、RELATIVE 和 ABSOLUTE 選項支持全部滾動功能。

⑩ sql 讓一個靜態的游標變成動態的游標 order by排序問題

定義游標使用:SCROLL
指定所有的提取選項(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE)均可用。如果未在 ISO DECLARE CURSOR 中指定 SCROLL,則 NEXT 是唯一支持的提取選項。