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

実行中にストアド プロシージャを変更するとどうなりますか?

    SQL Server 2008 R2 でこれをテストしました

    私は以下から始めました:

    CREATE PROCEDURE dbo.Stupid
    AS
    WAITFOR DELAY '0:00:10'
    SELECT TOP 5 * FROM dbo.UniqueId
    GO
    

    次に、SQL Server クエリ ウィンドウ 1: を実行しました。

    EXEC dbo.Stupid
    

    SQL Server クエリ ウィンドウ 2、クエリ ウィンドウ 1 のクエリ実行中:

    ALTER PROCEDURE dbo.Stupid
    AS
    WAITFOR DELAY '0:00:05'
    SELECT TOP 5 * FROM dbo.UniqueId
    WHERE ID > 5
    GO
    
    EXEC dbo.Stupid
    

    クエリ ウィンドウ 1 とクエリ ウィンドウ 2 でクエリを実行中に、SQL Server クエリ ウィンドウ 3:

    EXEC dbo.Stupid
    

    結果:

    • クエリ ウィンドウ 1 は 10 秒で実行され (したがって、ウィンドウ 2 と 3 の後に終了)、ID 1 から 5 が返されました
    • クエリ ウィンドウ 2 が変更され、手順が 5 秒で実行され、ID 6 ~ 10 が返されました
    • クエリ ウィンドウ 3 は 5 秒で実行され、ID 6 ~ 10 が返されました

    何が起こるか:

    • すでに実行中のコードは、開始されたときと同じ手順で実行を完了します
    • コードが変更された後に実行を開始するものはすべて、新しいコードを実行します


    1. ORA-01779:キー保存されていない表にマップする列を変更できません

    2. クエリ パラメータを使用して IN キーワードを入力することは可能ですか

    3. 応答の内容は、__ toString()を実装する文字列またはオブジェクトである必要があります。これは、psqlへの移動後にブール値で指定されます。

    4. MySQL Update Incremented(Auto-Incrementedではない)列の値