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

Jak vytvořit uloženou proceduru vázanou na schéma na serveru SQL Server

Pokud jste někdy vytvořili schéma UDF vázané na schéma, budete vědět, že vazba schématu je pouze záležitostí přidání WITH SCHEMABINDING k vaší definici. Totéž platí, když vytvoříte pohled vázaný na schéma.

Uložené procedury jsou trochu jiné.

Pouze nativně zkompilované uložené procedury lze vázat na schéma. Nativně kompilované uložené procedury ve skutečnosti musí být vázán na schéma. Nemůžete vytvořit nativně zkompilovanou uloženou proceduru, aniž byste ji svázali schématem.

Pokud se však pokusíte svázat schéma s běžnou (nenativně kompilovanou) procedurou, dostanete chybu.

Příklad uložené procedury vázané na schéma

Zde je příklad vytvoření uložené procedury vázané na schéma (nativně zkompilované).

PROCEDUR VYTVOŘENÍ dbo.usp_GetCowsByName @cowname varchar(70)WITH SCHEMABINDING, NATIVE_COMPILATIONASBEGIN ATOMIC WITH (ÚROVEŇ IZOLACE TRANSAKCE =SNAPSHOT, LANGUAGE =N'us_english' ) Coowsme SELECT @ENDOWREI /před> 

Zahrnul jsem WITH SCHEMABINDING argument, ale zahrnul jsem také NATIVE_COMPILATION , což znamená, že procedura je nativně zkompilovaná.

Všimněte si také ATOMIC WITH blok. To je vyžadováno pro nativně kompilované uložené procedury.

Tento kód vytvořil uloženou proceduru vázanou na schéma.

Chyba? Zkontrolujte tyto předpoklady

Nativně kompilované uložené procedury vyžadují, aby všechny podkladové tabulky byly tabulky optimalizované pro paměť.

Chcete-li vytvořit tabulky optimalizované pro paměť, musíte nejprve vytvořit skupinu souborů optimalizovanou pro paměť.

Zde je kód, který jsem použil k vytvoření skupiny souborů optimalizované pro paměť, jejího přidruženého souboru a tabulky optimalizované pro paměť, na kterou odkazuji v uložené proceduře:

ALTER DATABASE Test ADD FILEGROUP imoltp_test CONTAINS MEMORY_OPTIMIZED_DATA;GOALTER DATABASE Test PŘIDAT SOUBOR (name='imoltp_test1', filename='/var/opt/mssql/data/imoltp_test1.mdf';TACOLTBOTTBOGROUP]; [Cows]( [CowId] [int] IDENTITY(1,1) NOT NULL PRIMÁRNÍ KLÍČ NEZAHRNUTÝ, [CowName] [varchar](70) NULL, [Phone] [varchar](10) NULL) S (MEMORY_OPTIMIZED =ON , TRVALOST =SCHEMA_AND_DATA) GO

Pokud tedy chcete zkopírovat a vložit můj kód, musíte nejprve spustit tento a poté kód uložené procedury výše.

Všimněte si také, že používám SQL Server pro Linux, a proto cesty k souborům používají konvence Linuxu. Pokud vytváříte databázový soubor v systému Windows, budete jej muset změnit tak, aby používal konvenci cesty k souboru systému Windows (a ujistěte se, že používáte cestu k souboru, která existuje ve vašem systému).


  1. Jak opravit chybu „funkce datediff vedla k přetečení“ na serveru SQL Server

  2. dynamické předávání názvu tabulky a sloupce pomocí vazebných proměnných

  3. Databázový model pro online průzkum. Část 3

  4. Jak objednávat podle data v PostgreSQL nebo Oracle