Bir çok yerde özellikle konu başlıklarında yazılan cümlede geçen kelimelerin büyük harflerle yazılmasını isteriz. Bu hem görselliği hem de okunabilirliği artırır. Bunun yanında özel kelimeleri yada özel kısaltmaların ise (MCP, SQL, DDL, DML vs gibi) tamamı büyük harflerle yazılmış kısaltmaların değişmemesini isteriz. Eğer istedikleriniz bunlar ise istediğiniz Stored Procedure aşağıdaki gibidir:
Kod:
/*
Amaç : Cümledeki kelimelerin başlıklarını büyütüp diğer harfleri küçültme. Konu başlıklarınızı düzeltmek için çok işinize yarayacak
Yazan : Mehmet GÜZEL
Tarih : 24/04/2006
Eklenti : - Tamamen büyük harf olan kelimelerin olduğu gibi kalması
Örnek : 'MeHMeT GÜZEL' in 'Mehmet GÜZEL' e çevrilmesi gibi
SP nin kullanımına örnek:
DECLARE @mesaj VARCHAR(64)
EXEC BuyukBas 'BEN CETURKu sevMEYI sevdiM ',@mesaj OUT
SELECT @mesaj
*/
CREATE PROCEDURE BuyukBas
@Cumle VARCHAR(64),
@strMesaj VARCHAR(64) OUT
AS
DECLARE @YeniCumle VARCHAR(64),
@tmpCUMLE VARCHAR(64),
@BoslukYeri INTEGER,
@Kelime VARCHAR(32),
@YeniKelime VARCHAR(32),
@IlkHarf CHAR(1)
BEGIN
SET @YeniCumle=''
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(3),SPACE(1))))
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(2),SPACE(1))))
SET @BoslukYeri=1
WHILE((@BoslukYeri<>0) AND (LEN(LTRIM(RTRIM(@Cumle)))>0 ))
BEGIN
SET @tmpCUMLE=LTRIM(SUBSTRING(@Cumle,LEN(@YeniCumle),LEN(@Cumle) +1))
SET @BoslukYeri=(SELECT PATINDEX('%' + SPACE(1) + '%', @tmpCUMLE))
IF @BoslukYeri=0 SET @Kelime=@tmpCumle
ELSE SET @Kelime=LEFT(@tmpCUMLE,@BoslukYeri)
SET @IlkHarf=UPPER((SELECT LEFT(@tmpCUMLE,1)))
SET @YeniKelime=(CASE WHEN UPPER(@Kelime)=@Kelime COLLATE Turkish_CS_AS
THEN RTRIM(LTRIM(@Kelime))
ELSE @IlkHarf + RIGHT(RTRIM(@Kelime),LEN(@Kelime)-1)
END )
SET @YeniCumle=@YeniCumle +SPACE(1) + @YeniKelime
END
SET @strMesaj= LTRIM(RTRIM(@YeniCumle))
END
GO
Not: Türkçe Collation ile oluşturulmuş veritabanlarında Türkçe karakterlerin büyütülüp küçültülmesinde herhangi bir sorun yok.