Convert Etiketine sahip yazılar.
Oca
28
2013

MSSQL Nvarchar to Decimal Convert Fonksiyonu

MS SQLBir program yazımına başlanıldığında nedendir bilinmez ama işin en önemli kısmı olan veritabanı planlama ve tasarım aşamaları hep unutulur yada “aman sen de…” diyerek tüm kolonlar nvarchar yada benzer string yapılarda tanımlanır.

Program bu şekilde elbet çalışacaktır, fakat yazılımın performansı son derece düşecektir. Şöyle ki;

Elimizde 1 milyon satırı olan bir tablomuz olsun ve yapılmak istenen şey belirli tarih aralığındaki satışların toplam ve ortalama değerlerini hesaplamak olsun.

 

 

 

devamı…

May
13
2011

SQL PROCEDURE MACERASI -9

Buraya kadar her şey belli bir standart çerçevesinde gelişti, parametrik değişken geldi şartı sağlıyorsa X işlemi sağlamıyorsa Y işlemi gerçekleştirildi.

 

Ama biz bu kadar uzun sorgu cümleleri ile uğraşmak yerine DİNAMİK sorgular üzerinde çalışmış olsaydık bu sefer de PROSEDÜRLERİMİZİ kısaltabilecektik.

 

Ama Nasıl?

 

 

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

— =============================================

— Author:        Burak SEKERCIOGLU

— Create date: 12/05/2011

— Description:   SP TEST-9

— =============================================

 

CREATE PROCEDURE [dbo].[sp_TEST] (@tip int,@tip2 int)

 

AS

declare @sorgu nvarchar(max)

declare @odaca nvarchar(50)

declare @terkin nvarchar(50)

declare @sqlsorgu nvarchar(max)

declare @sor nvarchar(max)

declare @sor2 nvarchar(max)

declare @sqlsorgu2 nvarchar(max)

declare @sorgu2 nvarchar(max)

BEGIN

 

 

SET NOCOUNT ON;

 

 

if @tip=1

begin

set @sorgu='(indx.sanayi = 1)’

set @sqlsorgu=convert(nvarchar(max),@sorgu)

end

 

if @tip=2

begin

set @sorgu='(indx.ithalat = 1)’

set @sqlsorgu=convert(nvarchar(max),@sorgu)

end

 

if @tip=3

begin

set @sorgu='(indx.ihracat = 1)’

set @sqlsorgu=convert(nvarchar(max),@sorgu)

end

 

if @tip2=1

begin

set @sorgu2='(indx.sanayi = 1)’

set @sqlsorgu2=convert(nvarchar(max),@sorgu2)

end

 

if @tip2=2

begin

set @sorgu2='(indx.ithalat = 1)’

set @sqlsorgu2=convert(nvarchar(max),@sorgu2)

end

 

if @tip2=3

begin

set @sorgu2='(indx.ihracat = 1)’

set @sqlsorgu2=convert(nvarchar(max),@sorgu2)

end

 

 

set @odaca=’TASFİYE’

set @terkin=’TERK’

 

set @sor=’ and (durumtanimi<>@odaca) and (durumtanimi<>@terkin) ORDER BY kurum.grupkodu’

set @sor2=convert(nvarchar(max),@sor)

 

set @sorgu=’ SELECT     TOP (100) PERCENT  kurum.web, kurum.eposta, kurum.unvan, kurum.sicil, kurum.grupkodu,kurum.durum, kurum_indx.istihdam, kurum_indx.mark,kurum_indx.urun,sektor.sektor,kurum_indx.adres FROM         indx LEFT OUTER JOIN sektor ON indx.sektor = sektor.id RIGHT OUTER JOIN kurum ON indx.kno = kurum.kno WHERE’

if @tip is not null and @tip is null

begin

set @[email protected]+  @sqlsorgu + @sor2

end

 

if @tip is not null and @tip is not null

begin

set @[email protected]+  @sqlsorgu + ‘ OR ‘ + @sqlsorgu2 + @sor2

end

 

exec(@sorgu)

END

 

 

Yukarıdaki kodlardan da görebileceğiniz gibi her seferinde sorgumuzu uzun uzun yazmak yerine durumlara bağlı olarak @sorgu ve @sorgu2 ye değer atadık ve bu değerleri de @sqlsorgu ve @sqlsorgu2 değişkenlerine nvarchar(max) yaparak atadık.

 

Sonrasında ise @sorgu değişkeninde cümle yapılarını değişken şartlarına göre birleştirerek

exec(@sorgu)

ile çalıştırılmasını sağladık.

 

İşte böyle… Elimden geldiğince sizlere STORED PROCEDURE macerasında rehber olabilecek örnek yapıları anlatmaya çalıştım.

 

Bu konuda önemli olan şey, hayal gücünüzün sınırlarını genişletmek ve hayal gücünüz genişlerken de komut kombinasyonlarını korkmadan kullanabilmektir.

 

TeamViewer ile İnternet üzerinden Uzaktan Erişim ve Destek Sekercioglu.eu Uzaktan Yardım
Ammyy Uzaktan Yardım
WinRAR
WEBMAIL Google PageRank Checker
Twitterda Takip Edin! Twitterda Takip Edin!
Twitter

Üye Paneli

Son Yazılar

Kategoriler

Son Yorumlar