Forum

SQL Serverde ki Vie...
 
Bildirimler
Hepsini Temizle

SQL Serverde ki View leri dinamik hale getirmek mümkün mü?

Fatih YALÇIN
(@FatihYALCIN)
Üye

 Normalde Stored Procedurelerde aşağıdaki gibi işlem yapılınca dinamik bir stored procedure oluyor.

 ALTER PROCEDURE [dbo].[SP_BAYILER]
@Id NVARCHAR(8),
@FIRMANO NVarchar(3)
AS
Declare @SQLCMD NVarchar(2000)
SET NOCOUNT ON;
Set @SQLCMD ='SELECT BAYI_NO,BAYI_ADI from TB_'[email protected]+'_KARTLAR C '
Exec sp_executesql @SQLCMD

Yukarıdaki kod ne yazıkki viewlerde işlemiyor. Çünkü dışardan firma parametresini gönderemiyorum.

Yapmak istediğim Stored Procedurelerde olduğu gibi viewlerinde dinamik olması  bunun için yapılabilecek bir yöntem varmıdır.

iyi çalışmalar

Alıntı
Konu başlatıcı Gönderildi : 22/03/2012 17:37
Mesut ALADAĞ
(@mesutaladag)
Üye

Merhabalar,

 View nesneleri SQL Server'da tablo nesnelerine benzer şekilde kullanılan ve raporlama amaçlı tasarlanmış nesnelerdir. Raporları doğrudan tablodan sorgulamak yerine view'lardan sorgulayabilirsiniz.

View'lari kullanarak parametrik sorgulamalar yazmak icin, yazdigini stored procedure içerisinde parametreye gelen değerleri bir view'da sorgulayarak view'lar üzerinde parametrik sorgu gerceklestirebilirsiniz. Ornegin;

CREATE PROCEDURE PersonelListesiAl @Gelen money
   AS
   BEGIN
             SELECT TCKNo, AdSoyad FROM Personel_View
              WHERE Maas< @Gelen;
   END

Ya da benzer sekilde fonksiyon yazarak yine view'lara parametrik deger gondererek view.'larin parametrik kullanimini saglayabilirsiniz:

Ornegin;

Create Function ListeAl(@Gelen money) Returns Table
AS
RETURN Select TCKNo, AdSoyad form Personel_View where Maas<@Gelen;

Bu fonksiyonu cagirmak ve kullanmak icin de asagidaki sekilde sorgu yazabilirsiniz:

Select * From ListeAl(3000)

iyi calismalar,

Mesut ALADAĞ.

CevapAlıntı
Gönderildi : 23/03/2012 02:50
Fatih YALÇIN
(@FatihYALCIN)
Üye

Benim amacım şu Standart viewleri zaten gerekli SP lerin içerisinden çağırıyırum onlarda bir sıkıntı yok hocam.

benim sıkıntım şu. kullandığım programda yıllar itibariyle açılan dönem tablolaları var mesela 2012 yılına ait tablo yapısı TB_2012_KART

2013 yılına ait tablo yapısı TB_2013_KART  olarak gösteriliyor.

şimdi ben bunu viewlerde sorgulama yaparken mecburen

select * from TB_2012_KART şeklinde yazıyorum. 2013 yılında ne yapılacak bu tablo ismi 2013 olarak değişmesi gerekecek. dolayısıyla view dinamik olmuyor.

ben buraya bu tablo yapısını nasıl viewlerde dinamik yaparım onu sormuştum. 

"TB_"[email protected]+"_Kart" şeklinde yani

CevapAlıntı
Konu başlatıcı Gönderildi : 23/03/2012 11:22
Fatih YALÇIN
(@FatihYALCIN)
Üye

acaba bir view sorgusunu "select * from TB_"[email protected]+"_Kart"  şeklinde yazmanın bir yolu yokmu Çünkü firma ismi değişken TB_2012_Kart , TB_2013_Kart gibi değişiyor. Eğer bunu yukarıda gösterdiğim şekilde olmazsa ben tekrardan create view ile oluturmam gerekiyor yeni tablo ismine göre istediğim view 'i tek yapıp parametrik olarak değiştirmek . Bun Stored procedure de yapıyorum fakat view de bir türlü beceremedim.

kimse soruya cevap vermiyor  galiba mantık dışı bişey mi  istiyorum . yardımcı olursanız sevinirim

CevapAlıntı
Konu başlatıcı Gönderildi : 02/04/2012 12:35
Paylaş: