Professional Documents
Culture Documents
DBMS ไทย บทที่ 17 การสร้าง และใช้งานเคอร์เซอร์
DBMS ไทย บทที่ 17 การสร้าง และใช้งานเคอร์เซอร์
SELECT
SQL Server
(Cursors)
(Cursors)
SQL Server 3
DECLARE CURSOR
Transact
SQL, Stored Procedure
2 3
Library
API OLE DB, ODBC DB Library
Client Cursors
UPDATE
DELETE, UPDATE
WHERE CURRENT OF
1. DECLARE
SELECT
CustomerName - TblCostomers
2. DECLARE
OPEN
OPEN cust_cursor
3. OPEN
FETCH
DECLARE
FETCH
@@FETCH_STATUS
FETCH
WHILE (@@FETCH_STATUS = 0) -
0 FETCH
4.
<cursor_name>
cursor_name
5. CLOSE
OPEN
DEALLOCATE
( DEALLOCATE
DECLARE)
DECLARE
SQL Server
Transact SQL
Extended Syntax
ANSI 92
1. ANSI 92
ANSI 92
cursor_nam
e
IVE
INSENSIT select_statement
SCROLL
FETCH NEXT,
PRIOR, FIRST, LAST, RELATIVE,
ABSOLUTE
NEXT
Select_stat
ement
SELECT COMPUTE,
COMPUTE BY FOR BROWSE INTO
UPDATE
2. Transact SQL
Extended Syntax
[FORWARD_ONLY | SCROLL]
[STATIC | KEYSET | DYNAMIC | FAST_FORWARD]
--
Transact SQL Extended
STATIC
tempdb
ANSI
WHERE CategoryID = 2
- Transact - SQL
WHERE CategoryID = 2
ANSI INSENSITIVE
(Scrollable)
SCROLL
Transact SQL
KEYSET
tempdb STATIC
tempdb
OPEN
keyset
(Insert)
keyset
(Update)
(Delete)
@@FETCH_STATUS 2
KEYSET
TbIProducts
WHERE CategoryID = 2
keyset tempdb
KEYSET
KEYSET
STATIC
TYPE_WARNING
KEYSET TbIProducts
Unique Index SQL Server STATIC
TbIProducts
WHERE CategoryID=2
SQL Server
7
KEYSET OPEN
DYNAMIC
FETCH
ABSOLUTE
FETCH RELATIVE
DYNAMIC
TbIProducts
WHERE CategoryID=2
FORWARD_ONLY
READ_ONLY
TbIProducts
WHERE CategoryID=2
Not
e
Transact SQL
SELECT OPEN
2
STATIC
SELECT OPEN
(Distributed Query)
KEYSET
SELECT OPEN
text, ntext
image
DYNAMIC
SELECT
text, ntext image TOP
KEYSET
SQL Server
Stored Procedure
Global
Stored Procedure
Stored Procedure
Stored Procedure
Stored Procedure
Local
, Stored Procedure
Local
, Store Procedure Trigger
Local
DECLARE my_cursor1 CURSOR LOCAL STATIC
FOR SELECT ProductID, ProductName FROM
TbIProducts
WHERE CategoryID=2
SELECT
COMPUTE, COMPUTER BY FOR
BROWSE INTO
Transact SQL
2 SCROLL FORWARD_ONLY
STATIC, KEYSET
DYNAMIC SCROLL
FORWARD_ONLY (FORWARD_ONLY
FETCH NEXT SCROLL )
READ_ONLY
UPDATE DELETE
FAST_FORWARD
KEYSET
KEYSET
( STATIC
FAST_FORWARD)
SCROLL_LOCKS
FAST_FORWARD
OPTIMISTIC
Timestamp
Checksurn
FAST_FORWARD
DYNAMIC KEYSET
OPEN
DECLARE
OPEN
OPEN
INSENSITIVE
STATIC OPEN
KEYSET OPEN
@@CURSOR_ROWS
OPEN
@@CURSOR_ROWS
-m
STATIC KEYSET
-1
(m
DYNAMIC
STATIC KEYSET
(n
)
OPEN
OPEN
SQL Server
(Asynchronous)
OPEN
/*
EXEC sp_configure
/*
*/
*/
Cursor Threshold
1
OPEN
(synchronous)
Fetch
Sp_configure cursor thresthole, 0
FETCH LAST
KEYSET STATIC
FETCH
FETCH
ABSOLUTE n RELATIVE n
NEXT row_selector
FETCH NEXT
PRIOR
FIRST
LAST
ABSOLUTE n n
n
/*
1 */
/*
RELATIVE n n
n
/*
3 */
FETCH NEXT, PRIOR RELATIVE
n RELATIVE
ABSOLUTE
bitint, integer, smallint tinyint
FETCH NEXT
FETCH FIRST
FETCH PRIOR
FETCH RELATIVE FETCH
ABSOLUTE n n
0
@@FETCH_STATUS
1 @@FETCH_STATUS
0
-1
-2
FETCH
FETCH
DYNAMIC
UPDATE
UPDATE
KEYSET DYNAMIC
FETCH ABSOLUTE 3
UnitPrice 10
DELETE
DELETE
KEYSET DYNAMIC
cursor_name
Cur_Products TbIProducts
Not
e
UPDATE
DELETE
( INSERT
)
CLOSE
CLOSE
OPEN
CLOSE
OPEN
DECLARE
CLOSE Cur_Products
Not
e
ANSI
COMMIT TRANSACTION
SQL Server
ANSI SET
SET
DEALLOCATE
DEALLOCATE
DEALLOCATE cursor_name
DEALLOCAT Cur_Products
OPEN
DECLARE
DEALLOCATE
DYNAMIC
FORWARD_ONLY FETCH
FETCH NEXT
SCROLL
SCROLL m FETCH
3 KEYSET
KEYSET
FETCH
OPEN
DYNAMIC
4 DYNAMIC
DYNAMIC
FETCH
OPEN
(Cursor variables)
SQL Server
SET
SELECT
cursor_var
declard_cursor
--
Stored procedure
Stored Procedure
declared_cursor
--
--
cursor_var
--
declared_cursor
OPEN @cursor_var
--
OPEN declared_cursor
FETCH
CLOSE
FETCH
DEALLOCATE
DEALLOCATE declared_cursor
declared_cursor
@var_a_cursor
@var_b_cursor
CURSOR_STATUS
CURSOR_STATUS
5
Global,
Local
CURSOR_STATUS
STATIC KEYSET
-1
DYNAMIC 0, 1
-2
-3
DECLARE
sp_describe-cursor
Stored Procedure sp_describe_cursor
Stored Procedure
Stored Procedure
sp_describe_cursor [@cursor_return =]
output_cursor_variable OUTPUT
local_cursor_name] | -- local
local_cursor_name] | -- global
input_cursor_variable] | --
Stored Procedure
Cur_Products
@Report
sp_describe_cursor
CURSOR_SCOP
1 = LOCAL 2 = GLOBAL
STATUS
MODEL
CURSOR_STATUS
1 = Static 2 = Scroll licks 3 =
Optimistic
CONCURRENC
SCROLLABLE
OPEN_STATUS
Optimistic
0 = Closed 1 = Open
CURSOR_ROWS
@@CURSOR_ROWS
FETCH_STATUS Fetch
@@FETCH_STATUS
0 = Fetch
- 1 = Fetch
- 2 =
- 9 = Fetch
COLUMN_COU
ROW_COUNT
NT
@@ROWCOUNT
LAST_OPERATI
ON
0 =
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE