Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Nativně kompilované uložené procedury neimplementují úplnou programovatelnost Transact-SQL a oblast dotazu. Existují určité Transact-SQL konstrukce, které nelze použít uvnitř nativně kompilovaných uložených procedur. Další informace naleznete v tématu Podporované funkce pro nativně zkompilované moduly T-SQL.
Následující Transact-SQL funkce jsou podporovány pouze pro nativně zkompilované uložené procedury:
Atomické bloky. Další informace naleznete v tématu Atomové bloky.
NOT NULLomezení parametrů a proměnných. Hodnoty NULL nelze přiřadit parametrům nebo proměnným deklarovaným jako NOT NULL. Další informace najdete v tématu DECLARE @local_variable (Transact-SQL).CREATE PROCEDURE dbo.myproc (@myVarchar VARCHAR(32) NOT NULL) AS (...)DECLARE @myVarchar VARCHAR(32) NOT NULL = "Hello"; -- Must initialize to a value.SET @myVarchar = NULL; -- Compiles, but fails during run time.
Vazba schématu nativně zkompilovaných uložených procedur
Nativně zkompilované uložené procedury se vytvářejí pomocí příkazu CREATE PROCEDURE (Transact-SQL). Následující příklad ukazuje tabulku optimalizovanou pro paměť a nativně zkompilovanou uloženou proceduru použitou pro vkládání řádků do tabulky.
CREATE TABLE [dbo].[T2] (
[c1] [int] NOT NULL,
[c2] [datetime] NOT NULL,
[c3] nvarchar(5) NOT NULL,
CONSTRAINT [PK_T1] PRIMARY KEY NONCLUSTERED ([c1])
) WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
GO
CREATE PROCEDURE [dbo].[usp_2] (@c1 int, @c3 nvarchar(5))
WITH NATIVE_COMPILATION, SCHEMABINDING
AS BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)
DECLARE @c2 datetime = GETDATE();
INSERT INTO [dbo].[T2] (c1, c2, c3) values (@c1, @c2, @c3);
END
GO
V ukázce kódu NATIVE_COMPILATION označuje, že tato Transact-SQL uložená procedura je nativně zkompilovaná uložená procedura. Jsou vyžadovány následující možnosti:
| Možnost | Description |
|---|---|
| SCHEMABINDING | Nativně zkompilovaná uložená procedura musí být vázána na schéma objektů, na které odkazuje. To znamená, že tabulky odkazované postupem nelze vynechat. Tabulky odkazované v postupu musí obsahovat název schématu a zástupné znamény (*) nejsou povoleny v dotazech (tj. ne SELECT * from...).
FUNKCE SCHEMABINDING je podporována pouze pro nativně zkompilované uložené procedury v této verzi SQL Serveru. |
| BEGIN ATOMIC | Tělo nativně zkompilované uložené procedury musí obsahovat přesně jeden atomický blok. Atomové bloky zaručují atomické provádění uložené procedury. Pokud je procedura vyvolána mimo kontext aktivní transakce, spustí novou transakci, která se potvrdí na konci atomového bloku. Atomické bloky v uložených procedurách zkompilovaných nativně mají dvě povinné možnosti: ÚROVEŇ IZOLACE TRANSAKCÍ. Podporované úrovně izolace najdete v tématu Úrovně izolace transakcí pro tabulky Memory-Optimized . JAZYK. Jazyk uložené procedury musí být nastavený na jeden z dostupných jazyků nebo aliasů jazyka. |