2012-12-14 12 views
7

Daha sıkı güvenlik türünü uygulamak ve hataları daha kolay saptamak için, görünümümün sütun türlerini açıkça belirtmek isterim. SQL Server görünümü oluştururken sütun türleri belirtebilir miyim?

Ama

bu işleri yaparken:

CREATE VIEW [dbo].[myview] (
    [a], 
    [b], 
    [c] 
) 
AS 
SELECT 'a1', 'b1', 'c1'; 

Bu başarısız:

CREATE VIEW [dbo].[myview] (
    [a] nvarchar(32) NOT NULL, 
    [b] nvarchar(32) NOT NULL, 
    [c] nvarchar(32) NOT NULL 
) 
AS 
SELECT 'a1', 'b1', 'c1'; 

doğru sözdizimi bunun için var mı?

cevap

18

SQL Server tipini anlar var - ama eğer gerekirse elini zorlayabilirsiniz:

CREATE VIEW [dbo].[myview] (
    [a], 
    [b], 
    [c] 
) 
AS 
SELECT 
    CONVERT(nvarchar(32),'a1'), 
    CONVERT(nvarchar(32),'b1'), 
    CONVERT(nvarchar(32),'c1'); 

şeylerin null/boş olmayan tarafına gelince, yine, SQL Server, bu anlamak zorundadır . Eğer not null olacak biliyorum ama SQL Server yanlış oluyor bir sütun varsa, boş olmayan bir ikinci argüman olan bir ISNULL açıklamada sarın:

SELECT ISNULL(ColumnSQLServerThinksCanBeNull,'abc') 

Ve sonra da sütunu anlatacağız not null. İkinci değer önemli değil (her şeyden önce, bu sütun benim için hiçbir zaman null olmayacaktır), sütun için uyumlu bir tür olduğu sürece.