Trigger'da değişken üzerinden sorgulama
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Trigger'da değişken üzerinden sorgulama
Mesela
set @tbl='genel'
şeklinde bir değişken değeri ayarladıktan sonra ben bu @tbl içindeki değere göre aşağıdaki gibi sorgulama yapamadım. Bunun bir yolu var mıdır? Varsa Nedir?
select * from @tbl
asıl yapmak istediğim ise
set @tbl='genel..tanimlar'
update @tbl set A=Null
gibi bir işlem.
Not:Bu şekilde çalışmadı...
set @tbl='genel'
şeklinde bir değişken değeri ayarladıktan sonra ben bu @tbl içindeki değere göre aşağıdaki gibi sorgulama yapamadım. Bunun bir yolu var mıdır? Varsa Nedir?
select * from @tbl
asıl yapmak istediğim ise
set @tbl='genel..tanimlar'
update @tbl set A=Null
gibi bir işlem.
Not:Bu şekilde çalışmadı...
Kod: Tümünü seç
DECLARE @SQL Varchar(200)
declare @tbl Varchar(100)
set @tbl= 'INFO_UYELER'
SET @SQL = 'SELECT * FROM ' + @tbl
exec(@SQL)
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
peki
Çok güzel çalıştı. Peki ben bunu
if Exists(exec(@SQL))
begin
.
.
end
gibi bir mantıkla kullanmam gerekiyor. Bu yapılabiliyor mu?
Not: Bu şekilde yine çalışmadı
if Exists(exec(@SQL))
begin
.
.
end
gibi bir mantıkla kullanmam gerekiyor. Bu yapılabiliyor mu?
Not: Bu şekilde yine çalışmadı
başka
Kod: Tümünü seç
DECLARE @SQL Varchar(200)
declare @tbl Varchar(100)
set @tbl= 'L_CAPIFIRM'
SET @SQL = 'SELECT * FROM ' + @tbl
IF EXISTS(SELECT * FROM sysobjects WHERE id = OBJECT_ID(@TBL))
BEGIN
PRINT 'TABLO VAR'
END
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Problemde Asıl İstenen
Bu şekilde tablonun olup olmadğını kontrol etmek değilde. String içinde oluşturduğum SQL cümlesinden çıkan sonuç üzerinden çalışmak istiyorum. Yani tam olarak
Artık @SQL string bilgisi içinde bulunan SQL cümlenin çalışması sonucu kayıt olup olmadığının kontrolünü yapmam lazım. Ondan sonrası kolay.
işte bütün mesele burada. Başka Veritabanı içinde bulunan tabloyu kontrol edip güncellemem lazım. Güncelleme kısmı oldu fakat kontrol edemiyorum. Başka veri tabanı kullanmak için USE komutunu kullanmayı denedim o da olmadı.
Kod: Tümünü seç
DECLARE @SQL Varchar(200)
declare @tbl Varchar(100)
declare @stkid Varchar(30)
declare @mik Varchar(30)
select @stkid=Kartid,@mik=Miktar from inserted
begin
set @tbl=DB_NAME() --Çalıştığım katalog (veri tabanı)
set @tbl=Left(@tbl,Len(@tbl)-4)+'GENEL..Kart' /*başka katalog içindeki tablo.*/
SET @SQL = 'SELECT * FROM ' + @tbl +' where id='+@stkid
Kod: Tümünü seç
if (??????????????????????)--Kontrol sonrası kayıt varsa
begin
SET @SQL = 'update '+@tbl+' set Toplam=isNull(Toplam,0+'+@mik+' where id='+@stkid
EXEC(@SQL)
end else RAISERROR('[%s] nolu kart bulunamadı!',16,1,@stkid)
end
EXEC komutu içinde çalıştırdığınız SQL'den geçici tablo oluşturup (tabi örneğin tek kayıtlık) bilahare o tablo için EXISTS vs kullanın.
Örneğin:gibi.
İyi çalışmalar.
Örneğin:
Kod: Tümünü seç
EXEC('SELECT TOP 1 * INTO #TEMPTABLO FROM DB.dbo.URUN ...')
IF EXISTS(SELECT * FROM #TEMPTABLO...) ....
İyi çalışmalar.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Çözüm
Hmmm!.. Çok zekice bir çözüm . Yardımlarınızdan dolayı çok sağolun.