İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

insert into da değişken

masques

0
İyinet Üyesi
Katılım
12 Ocak 2006
Mesajlar
917
Reaction score
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
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
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
İyinet Üyesi
Katılım
4 Şubat 2006
Mesajlar
212
Reaction score
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...
 

masques

0
İyinet Üyesi
Katılım
12 Ocak 2006
Mesajlar
917
Reaction score
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
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
EXEC('INSERT INTO '+@tablom+' (adi) VALUES("'+@metin+'")')

olacak.
 

masques

0
İyinet Üyesi
Katılım
12 Ocak 2006
Mesajlar
917
Reaction score
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
İyinet Üyesi
Katılım
12 Ocak 2006
Mesajlar
917
Reaction score
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
İyinet Üyesi
Katılım
4 Şubat 2006
Mesajlar
212
Reaction score
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
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst