Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Şunlar için geçerlidir: SQL Server 2017'yi (14.x) başlatan Azure SQL Veritabanı ve SQL Server
CASE ifadeleri yerel olarak derlenmiş T-SQL modüllerinde desteklenir. Aşağıdaki örnekte, sorguda CASE ifadesini kullanmanın bir yolu gösterilmektedir.
-- 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
Şunlar için geçerlidir: SQL Server 2014 (12.x) ve SQL Server 2016'dan (13.x) itibaren SQL Server
CASE ifadeleri yerel olarak derlenmiş T-SQL modüllerinde desteklenmez. Aşağıdaki örnek, yerel olarak derlenmiş bir saklı yordamda CASE ifadesinin işlevselliğini uygulamanın bir yolunu gösterir.
Kod örnekleri tek bir sonuç kümesi oluşturmak için bir tablo değişkeni kullanır. Bu yalnızca sınırlı sayıda satırı işlerken uygundur, çünkü veri satırlarının ek bir kopyasını oluşturmayı içerir.
Bu geçici çözümün performansını test etmelisiniz.
-- 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
Ayrıca Bkz.
Yerel Olarak Derlenmiş Saklı Yordamlar için Geçiş Sorunları
In-Memory OLTP Tarafından DesteklenmeyenTransact-SQL Yapıları