Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

insert into da değişken

masques

0
Onaylı Üye
Üye
Katılım
12 Ocak 2006
Mesajlar
917
Açılan Konu
68
Tepki puanı
1
sql server da insert into cümlesi içine değişken tablo atama şansımız yokmu ?


declare @tablom as varchar(30)
set @tablom = 'deneme'
insert into @tablom (adi) values('qweqwe')

gibi bir kullanımda

Server: Msg 137, Level 15, State 2, Line 3
Must declare the variable '@tablom'.


hatası veriyor. @tablom tanımlanmadı diyor ama yukarda gördüğünüz gibi tanımlı
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Oyle her @tablom yazdigin yeri parse edip deneme yazmaz.

Su sekilde bir dene

declare @sql varchar(200)
set @tablom = 'deneme'
set @sql = 'INSERT into @tablom .......'

exec(@sql)

gibi once sql degiskenine query'i at sonra execute et. MSSQL kullaniyorsun galiba, cok bilmiyorum syntax yapisini ama bu mantikla sql degiskenine query nin tumunu atarken bazi escape kodlari da kullanman gerekecek galiba.
 

nedium

0
Onaylı Üye
Üye
Katılım
4 Şubat 2006
Mesajlar
212
Açılan Konu
9
Tepki puanı
0
Ben de ilk karşılaştığımda afallamıştım.
EXEC komutu ile sql cümleciklerini ve stored procedureleri çalıştırabilirsin.
bu örnek için:
EXEC('INSERT INTO '+@tablom+' (adi) VALUES(''qweqwe'')')

Ya da çalıştıracağın sql komutunu bir string değişkene atayım, exec komutu ile çalıştırabilirsin.

DECLARE @sqlcmd varchar(100)
SET @sqlcmd = 'insert into @tablom (adi) values(''qweqwe'')'
EXEC(@sqlcmd)

edit:
Angelo aynı anda yazmışız mesajı, istersen benimkini kaldır...
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Olsun, %100 emin yazmamistim, iyi oldu:)
 

masques

0
Onaylı Üye
Üye
Katılım
12 Ocak 2006
Mesajlar
917
Açılan Konu
68
Tepki puanı
1
arkadaşlar bu sorunu çözdüm tşkler şimdi bunun devamı olarak 2. bi sorun kaldı

EXEC('INSERT INTO '+@tablom+' (adi) VALUES(''qweqwe'')')

kısmında tablo ismini kabul etti ama values kısmına değişken atayamıyorum bu sefer

procedureden alıp values e yazdıracam ama yemedi.

rakamları alıyor ama string ifadeleri almıyor


EXEC('INSERT INTO '+@tablom+' (adi) VALUES('+@metin+')')


burda metini değişken olarak almıyor
 

Caesar

0
Onaylı Üye
Üye
Katılım
5 Haziran 2006
Mesajlar
1,894
Açılan Konu
83
Tepki puanı
7
EXEC('INSERT INTO '+@tablom+' (adi) VALUES("'+@metin+'")')

olacak.
 

masques

0
Onaylı Üye
Üye
Katılım
12 Ocak 2006
Mesajlar
917
Açılan Konu
68
Tepki puanı
1
EXEC('INSERT INTO '+@tablom+' (adi) VALUES("'+@metin+'")')

olacak.

declare @tablom nvarchar(30)
declare @metin nvarchar(30)

set @tablom = 'veritablo1'
set @metin = 'aciklama'

exec('INSERT INTO '+@tablom+' (adi) VALUES("'+@metin+'")')



Server: Msg 128, Level 15, State 1, Line 1
The name 'aciklama' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.


dedi
 

masques

0
Onaylı Üye
Üye
Katılım
12 Ocak 2006
Mesajlar
917
Açılan Konu
68
Tepki puanı
1
tamamdır sonunda hallettim


declare @tablom nvarchar(30)
declare @metin nvarchar(30)

set @tablom = 'veritablo1'
set @metin = 'aciklama mujuu'

exec('INSERT INTO '+@tablom+' (adi) VALUES('''+@metin+''')')


şeklinde çalışıyor herkese tşkler +repler :)

--------

declare @kayit int

set @kayit = exec('select count(*) from @tablo')

gibi bi kullanımda


Server: Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'exec'.

nie hata vriyodur
 

nedium

0
Onaylı Üye
Üye
Katılım
4 Şubat 2006
Mesajlar
212
Açılan Konu
9
Tepki puanı
0
tamamdır sonunda hallettim
declare @kayit int

set @kayit = exec('select count(*) from @tablo')

gibi bi kullanımda


Server: Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'exec'.

nie hata vriyodur

:D o da ööle olmuyo
ben şu şekilde hallediyorum, %100 çalışıyor:

DECLARE
@kayit int

EXEC('DECLARE cKayit CURSOR FOR SELECT COUNT(*) FROM '+@tablo)
OPEN cKayit
FETCH NEXT FROM cKayit INTO @kayit
CLOSE cKayit
DEALLOCATE cKayit

biz şirkette bu tür kodlara "kamyoncu kodu" diyoruz. çalışıyo ama küçük bir işi çok kodla hallediyo.
bunun kısasını bilen varsa yazsın, büyük sevaba girer, her gün bu bloktan en az 10 kere yazıyorum. parmaklarım kas yaptı :D
 
Üst