Forum
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_'+@FIRMANO+'_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
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Ğ.
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_"+@firma+"_Kart" şeklinde yani
acaba bir view sorgusunu "select * from TB_"+@firma+"_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