SQL Server’da Özelleştirilmiş PRINT Prosedürü
Herkese merhaba. Bu yazıda SQL Server’da özelleştirilmiş PRINT prosedürü ile ilgili bilgi vermeye çalışacağım.
SQL Server’da PRINT ifadesi 8000 karaktere kadar yazdırma işlemi yapar. Peki yazdığınız dinamik sorguların içeriği 8000 karakterden uzunsa ne yapacaksınız?
SQL Server’da bazı durumlarda 8000 karakterden daha fazla olan ifadeleri PRINT ile yazdırmak isteyebilirsiniz.
Aşağıdaki prosedürü kullanarak sizler de bu işlemi rahatlıkla yapabilirsiniz.
CREATE PROCEDURE LONGPRINT
@String NVARCHAR(MAX)
AS
BEGIN
BEGIN TRY
DECLARE @CurrentEnd BIGINT;
DECLARE @Offset TINYINT;
SET @String = replace(replace(@String, CHAR(13) + CHAR(10), CHAR(10)), CHAR(13), CHAR(10))
WHILE LEN(@String) > 1
BEGIN
IF CHARINDEX(CHAR(10), @String) BETWEEN 1 AND 4000
BEGIN
SET @CurrentEnd = CHARINDEX(CHAR(10), @String) -1
SET @Offset = 2
END
ELSE
BEGIN
SET @CurrentEnd = 4000
SET @Offset = 1
END
PRINT SUBSTRING(@String, 1, @CurrentEnd)
SET @String = SUBSTRING(@String, @CurrentEnd + @Offset, LEN(@String))
END
END TRY
BEGIN CATCH
DECLARE @ErrorMessage VARCHAR(4000)
SELECT @ErrorMessage = ERROR_MESSAGE()
RAISERROR(@ErrorMessage,16,1)
END CATCH
END
--Kullanımı
DECLARE @Degisken VARCHAR(MAX)
SET @Degisken = REPLICATE('x', 60000)
EXEC LONGPRINT @Degisken
Yukarıdaki prosedürü oluşturup kodu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.
Görüldüğü üzere 6000 karakteri LONGPRINT prosedürü ile yazdırmış olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.