sql >> Databáze >  >> RDS >> Sqlserver

Co se stane, když změníte uloženou proceduru, když je spuštěna?

Právě jsem to testoval v SQL Server 2008 R2

Začal jsem s:

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

Poté jsem provedl následujícíokno SQL Server Query 1:

EXEC dbo.Stupid

Okno dotazu SQL Server 2, když byl spuštěn dotaz v okně dotazu 1:

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

EXEC dbo.Stupid

Okno dotazu SQL Server 3, zatímco byly spuštěny dotazy v okně dotazu 1 a okně dotazu 2:

EXEC dbo.Stupid

Výsledky:

  • Okno dotazu 1 se spustilo za 10 sekund (a proto skončilo po oknech 2 a 3) a vrátilo ID 1 až 5
  • Dotazové okno 2 se změnilo a spustilo proceduru za 5 sekund a vrátilo ID 6–10
  • Okno dotazu 3 se spustilo za 5 sekund a vrátilo ID 6–10

Co se stane:

  • Již spouštěný kód dokončí běh procedury tak, jak byl při spuštění
  • Cokoli, co se spustí po změně kódu, spustí nový kód


  1. postgresql jaký je nejlepší způsob exportu konkrétního sloupce z konkrétní tabulky z DB do jiné

  2. Vkládání dat do databáze Oracle pomocí php

  3. Oracle get datum formátované jako řetězec mezi dvěma daty

  4. Můžeme smazat fyzický soubor ze serveru, když vymažu odpovídající záznam z databáze?