Události
SQL ve společnosti FabCon Vegas
31. 3. 23 - 2. 4. 23
Největší událost učení SQL, Fabric a Power BI. 31. března – 2. dubna. Pomocí kódu FABINSIDER uložte $400.
Zaregistrovat se ještě dnesTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
platí pro: Azure SQL Database a SQL Server od SQL Serveru 2017 (14.x)
Výrazy CASE se podporují v nativně kompilovaných modulech T-SQL. Následující příklad ukazuje způsob použití výrazu CASE v dotazu.
-- Query using a CASE expression in a natively compiled stored procedure.
CREATE PROCEDURE dbo.usp_SOHOnlineOrderResult
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE=N'us_english')
SELECT
SalesOrderID,
CASE (OnlineOrderFlag)
WHEN 1 THEN N'Order placed online by customer'
ELSE N'Order placed by sales person'
END
FROM Sales.SalesOrderHeader_inmem
END
GO
EXEC dbo.usp_SOHOnlineOrderResult
GO
Platí pro: SQL Server 2014 (12.x) a SQL Server počínaje SQL Serverem 2016 (13.x)
Výrazy CASE se nejsou podporované v nativně kompilovaných modulech T-SQL. Následující ukázka ukazuje způsob implementace funkcí výrazu CASE v nativně zkompilované uložené procedurě.
Ukázky kódu používají proměnnou tabulky k vytvoření jedné sady výsledků. To je vhodné pouze při zpracování omezeného počtu řádků, protože zahrnuje vytvoření další kopie řádků dat.
Měli byste otestovat výkon tohoto alternativního řešení.
-- original query
SELECT
SalesOrderID,
CASE (OnlineOrderFlag)
WHEN 1 THEN N'Order placed online by customer'
ELSE N'Order placed by sales person'
END
FROM Sales.SalesOrderHeader_inmem
-- workaround for CASE in natively compiled stored procedures
-- use a table for the single resultset
CREATE TYPE dbo.SOHOnlineOrderResult AS TABLE
(
SalesOrderID uniqueidentifier not null index ix_SalesOrderID,
OrderFlag nvarchar(100) not null
) with (memory_optimized=on)
go
-- natively compiled stored procedure that includes the query
CREATE PROCEDURE dbo.usp_SOHOnlineOrderResult
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE=N'us_english')
-- table variable for creating the single resultset
DECLARE @result dbo.SOHOnlineOrderResult
-- CASE OnlineOrderFlag=1
INSERT @result
SELECT SalesOrderID, N'Order placed online by customer'
FROM Sales.SalesOrderHeader_inmem
WHERE OnlineOrderFlag=1
-- ELSE
INSERT @result
SELECT SalesOrderID, N'Order placed by sales person'
FROM Sales.SalesOrderHeader_inmem
WHERE OnlineOrderFlag!=1
-- return single resultset
SELECT SalesOrderID, OrderFlag FROM @result
END
GO
EXEC dbo.usp_SOHOnlineOrderResult
GO
problémy s migrací nativních uložených procedur
Transact-SQL konstrukce, které In-Memory OLTP nepodporuje
Události
SQL ve společnosti FabCon Vegas
31. 3. 23 - 2. 4. 23
Největší událost učení SQL, Fabric a Power BI. 31. března – 2. dubna. Pomocí kódu FABINSIDER uložte $400.
Zaregistrovat se ještě dnesŠkolení
Modul
Větvení postupu kódu pomocí konstruktoru switch-case v jazyce C# - Training
Zjistěte, jak přidat logiku větvení, která porovnává jednu proměnnou nebo výraz s mnoha možnými hodnotami.
Dokumentace
CASE (Transact-SQL) - SQL Server
Transact-SQL reference for the CASE expression. CASE evaluates a list of conditions to return specific results.
Expressions (Transact-SQL) - SQL Server
Expressions (Transact-SQL)
IIF (Transact-SQL) - SQL Server
The IIF logical function Returns one of two values, depending on whether the Boolean expression evaluates to true or false.