sql >> データベース >  >> RDS >> Sqlserver

SQLServerのカーソルタイプ-動的カーソル| SQLServerチュートリアル/TSQLチュートリアル

    カーソルは、結果セットから行ごとにデータにアクセスできるようにするオブジェクトです。


    動的カーソルは更新可能です。テーブル内の元のデータに変更が発生した場合、カーソルが開いている間、動的カーソルは各フェッチで変更(挿入、更新、または削除)をフェッチします。このタイプのカーソルは、カーソルが開いているときに元のテーブルからレコードを抽出し、データの変更または新しいレコードの挿入を行っており、それらをカーソル結果セットに含めて操作を実行する場合に役立ちます。

    動的カーソルはスクロール可能(First、Last、Prior、Next、Relative)ですが、絶対 オプションは動的カーソルでは機能しません。

    ビデオでも使用されているSQLServerの動的カーソルのスクリプト。


    --drop table dbo.Customer
    Create table dbo.Customer ( 
    CustomerId Int Identity(1,1),
    CustomerName VARCHAR(100),
    StreetAddress VARCHAr(100),
    City VARCHAR(100),
    State CHAR(2))
    go
    
    --Insert couple of Records in Sample Table
    Insert into dbo.Customer
    Select 'Aamir shahzad','Test Street Address','Charlotte','NC'
    Union 
    Select 'M Raza','Test Street Address','Charlotte','NC'
    
    Select * from dbo.Customer
    
    --Insert NEW Record
    Insert into dbo.Customer
    Select 'John Smith','Test Street Address','New York City','NY'
    
    --Delete Records
    Delete from dbo.Customer
    Where CustomerName in ('Aamir Shahzad','M Raza')
    
    --Update All Record
    Update dbo.Customer
    set CustomerName='NO NAME'
    
    
    
    
    --Cursor Script
    
    Declare @CustomerID INT
    Declare @CustomerNAme VARCHAR (100)
    DECLARE @StreetAddress VARCHAR(100)
    DECLARE @City VARCHAR(100)
    DECLARE @State CHAR(2)
    
    --DECLARE A CURSOR
    DECLARE CUR CURSOR
    DYNAMIC
    FOR
    Select CustomerID,CustomerName,StreetAddress,City,State from dbo.Customer
    
    --OPEN CURSOR
    OPEN CUR
    Print 'CURSOR IS OPEN'
    --FETCH NEXT RECORD
    FETCH NEXT FROM CUR INTO @CustomerID,@CustomerNAme,@StreetAddress,@City,@State
    WHILE @@FETCH_STATUS=0
    BEGIN 
    RAISERROR ('',0,1) WITH NOWAIT
    WAITFOR DELAY '00:00:15'
    PRINT CONCAT(@CustomerID,' ',@CustomerNAme,' ',@StreetAddress,' ',@City,' ',@State)
    FETCH NEXT FROM CUR INTO @CustomerID,@CustomerNAme,@StreetAddress,@City,@State
    
    END
    CLOSE CUR
    DEALLOCATE CUR
     
    SQLServerでの動的カーソルの詳細デモのビデオをご覧ください。
    1. SQLServerでsysjobhistoryの日時と期間の列をフォーマットします

    2. SQL Serverトランザクションログ、パート1:ログの基本

    3. DBA-SQLServer上のすべてのデータベースプロセスを強制終了する方法

    4. ツールボックスから取り出す非推奨の機能–パート1