FIELDNAME değişken olunca field in değerini listelemiyor

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 02:53

FIELDNAME değişken olunca field in değerini listelemiyor

Mesaj gönderen softdestek » 04 Eyl 2015 06:03

Kod: Tümünü seç

use deneme
DECLARE @DEGERNEW VARCHAR(3000) 
DECLARE @NEWVALUE VARCHAR(3000)

set @NEWVALUE=N'GUEST_NAME'


select   @DEGERNEW=@NEWVALUE FROM MYNEW
PRINT @DEGERNEW 

SET @DEGERNEW = (select TOP 1 GUEST_NAME FROM MYNEW);
SELECT @DEGERNEW;

SET @DEGERNEW = (select TOP 1 @NEWVALUE FROM MYNEW);
SELECT @DEGERNEW;
yukardaki kodda:

Kod: Tümünü seç

SET @DEGERNEW = (select TOP 1 GUEST_NAME FROM MYNEW); 
PRINT @DEGERNEW 


sql çalışınca GUEST_NAME alanının değeri olan
VEDAT PALA listeleniyor fakat field adını değişken kullanınca aşağıdaki kodda olduğu gibi

Kod: Tümünü seç

SET @DEGERNEW = (select TOP 1 @NEWVALUE FROM MYNEW);
PRINT @DEGERNEW 
bu kodu çalıştırnca ise GUEST_NAME değeri değilde
sadece SET @DEGERNEW = (select TOP 1 @NEWVALUE FROM MYNEW);
çıktısı GUEST_NAME oluyor çıktı bunun sebebi nedir?

Yapmak istediğim şey field adını değişken yapıp fieldin değerini yazdırmak

mkysoft
Kıdemli Üye
Mesajlar: 3011
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: FIELDNAME değişken olunca field in değerini listelemiyor

Mesaj gönderen mkysoft » 04 Eyl 2015 08:29

SQL'i komple değişken olarak oluşturup EXEC ile çağırabilirsiniz.

EXEC(N'SET @DEGERNEW = (select TOP 1 ' + @NEWVALUE + N' FROM MYNEW);');

Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 02:53

Re: FIELDNAME değişken olunca field in değerini listelemiyor

Mesaj gönderen softdestek » 04 Eyl 2015 09:27

Daha önceden de denemiştim bunu.Aynı hatayı veriyor

mkysoft
Kıdemli Üye
Mesajlar: 3011
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: FIELDNAME değişken olunca field in değerini listelemiyor

Mesaj gönderen mkysoft » 04 Eyl 2015 10:17

Çünkü EXEC yeni bir fonksiyon olduğundan değişkenleri görmüyor. Internal table kullanılabilir yada aşağıdaki gibi yapılabilir:

declare @NEWVALUE varchar(50) = 'Alan1';
declare @DEGERNEW varchar(50);
declare @SQL nvarchar(4000);


SET @SQL = N'select TOP 1 @DEGERNEW = ' + @NEWVALUE + N' FROM Tablom;';
exec sp_executesql @SQL, N'@DEGERNEW varchar(50) out', @DEGERNEW out
select @DEGERNEW

Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 02:53

Re: FIELDNAME değişken olunca field in değerini listelemiyor

Mesaj gönderen softdestek » 05 Eyl 2015 12:41

Bu şekilde oldu teşekkür ederim gösterdiğiniz ilgi için...

Cevapla