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

SQLServerで同じクエリを複数回実行する最も簡単な方法

    SQL Serverを使用するほとんどの人は、GOを追加する規則について知っています。 T-SQLステートメントの各バッチの最後まで。しかし、あまり一般的ではないかもしれませんが、GOの後に整数を追加することもできます。 バッチを実行する回数を指定します。

    例1-基本的な使用法

    仕組みの例を次に示します。

    SELECT GETDATE() AS DateTime;
    GO 3
    

    結果:

    +-------------------------+
    | DateTime                |
    |-------------------------|
    | 2020-01-08 09:26:31.663 |
    +-------------------------+
    Beginning execution loop
    +-------------------------+
    | DateTime                |
    |-------------------------|
    | 2020-01-08 09:26:31.663 |
    +-------------------------+
    Beginning execution loop
    +-------------------------+
    | DateTime                |
    |-------------------------|
    | 2020-01-08 09:26:31.663 |
    +-------------------------+
    Beginning execution loop
    Time: 0.578s
    

    GO 3を指定しました その結果、クエリが3回実行されました。また、クエリが実行されるたびに「実行ループの開始」という言葉が表示されました。

    クエリの実行に使用したツールに応じて、このクエリの結果は異なります。これらは、 mssql-cliの使用中に得られた結果です。 コマンドラインツール。小数秒はすべて同じです。しかし、Azure Data Studioを使用すると、秒の小数部が増加しました。

    例2–日付/時刻の印刷

    これは、Azure Data Studioを使用して実行した例で、秒の小数部の増分を示しています。

    DECLARE @theTime time(7) = GETDATE();
    PRINT @theTime;
    GO 5
    

    結果:

    Started executing query at Line 4
    Beginning execution loop
    09:31:40.6100000
    09:31:40.6166667
    09:31:40.6200000
    09:31:40.6233333
    09:31:40.6266667
    Batch execution completed 5 times...
    Total execution time: 00:00:00.022
    

    例3–データベースの例

    これは、データベースにデータを挿入する例です。

    CREATE TABLE LoopTest
    (
        LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID(),
        InsertDate datetime2(7) NOT NULL DEFAULT GETDATE()
    );
    GO
    
    INSERT LoopTest (LoopTestId, InsertDate)
    VALUES (DEFAULT, DEFAULT);
    GO 20
    
    SELECT *
    FROM LoopTest;
    GO
    

    結果:

    +--------------------------------------+-----------------------------+
    | LoopTestId                           | InsertDate                  |
    |--------------------------------------+-----------------------------|
    | d6eda0a2-710d-467e-a4cf-41602e161851 | 2020-01-08 09:37:38.4733333 |
    | 0d8b3622-946f-4dce-816e-6123516da4e4 | 2020-01-08 09:37:38.4833333 |
    | b3ac2482-7304-4846-a258-5dc51b2623f9 | 2020-01-08 09:37:38.4866667 |
    | 1744836e-6af6-40c8-ab7e-98ca88e8ac1b | 2020-01-08 09:37:38.5000000 |
    | 91c4858c-0c31-4d99-aba5-3a70424239fd | 2020-01-08 09:37:38.5066667 |
    | f8b3de8b-7dd1-46c3-a7a8-b1af711d676d | 2020-01-08 09:37:38.5133333 |
    | 306467d8-2e5b-4046-8102-a33f6906b41d | 2020-01-08 09:37:38.5233333 |
    | 6cf93d79-5921-498e-ab14-55782284dc12 | 2020-01-08 09:37:38.5333333 |
    | 7bb99e3b-d174-47eb-81b3-46b49982eaad | 2020-01-08 09:37:38.5500000 |
    | c788d046-0c6c-4a2b-b3f1-3415470bf723 | 2020-01-08 09:37:38.5566667 |
    | 52bb8951-8e71-46ac-ab98-1e261751dc5b | 2020-01-08 09:37:38.5600000 |
    | 3a061055-0b1e-405c-aa13-480cdde8291c | 2020-01-08 09:37:38.5666667 |
    | 1cabaf44-ac85-4bcf-8fee-7d349cb56561 | 2020-01-08 09:37:38.5700000 |
    | 0cb3a690-66e9-458d-8c27-b0f44af4211d | 2020-01-08 09:37:38.5766667 |
    | 19719223-eb9f-4477-82cc-e60995e0dcee | 2020-01-08 09:37:38.5800000 |
    | 6da2484d-68c7-43f4-8ffc-968545974a42 | 2020-01-08 09:37:38.5833333 |
    | d644bbed-047f-49ac-98c4-e032bdb4add3 | 2020-01-08 09:37:38.5900000 |
    | 2c215900-0fd8-4889-8115-2a904ac72a61 | 2020-01-08 09:37:38.5933333 |
    | 01ccc184-3657-4298-98a7-b31e158a56e8 | 2020-01-08 09:37:38.5933333 |
    | 9270036f-8821-45c8-aef5-30aec2d4f4b4 | 2020-01-08 09:37:38.6000000 |
    +--------------------------------------+-----------------------------+
    

    この場合、両方の列がDEFAULTで挿入されています 、これにより、各列にデフォルト値(これも指定します)が入力されます。最初の列のデフォルト値はNEWID()です。 、GUIDを生成する関数。 2番目の列のデフォルトはGETDATE()です。 、これにより現在の日付と時刻になります。


    1. PostgreSQLでのAbs()のしくみ

    2. ユーザー入力に依存する長いクエリに対してPHPでMySQLエラーを表示するにはどうすればよいですか?

    3. OracleのNEW_TIME()関数

    4. SQLServerの@@TEXTSIZEとは何ですか?