insert işlemi esnasında hata

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
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

insert işlemi esnasında hata

Mesaj gönderen denizfatihi »

Merhaba,

Aşağıdaki kod ile insert işlemi yapmaya çalıştığımda hata alıyorum.
Sebebi ne olabilir ?

Kod: Tümünü seç

INSERT INTO ESLESTIRME (SIRA, EVRAKTARIHI, VADE, EVRAKNO, FATEVRAKNO, IPTAL, TURAC, ACIKLAMA, CARIADI, CRSTA, CARIREF, CARIKOD, GENELTOPLAM, FATREF, MUHKOD, YILREF, KTUTAR, TIP)
SELECT FT.SIRANO, FT.EVRAKTAR, FT.VADETARIHI, FT.EVRAKNO, FTA.FATEVRAKNO, FT.IPTAL, FT.TURAC, FTA.STA ,FT.CARIADI, CR.STA, FT.CARIREF, FT.CRK,  
FT.GENELTOPLAM,
FTA.FATREF, CR.GMHK,  
cast(YEAR(FT.EVRAKTAR)  as varchar) +'-'+ CAST(FT.EVRAKNO AS NVARCHAR) +'-'+ CAST(FTA.FATREF AS NVARCHAR) as TARIHREF, convert(float,0), 'A' 
FROM FATURA FT
JOIN FATURA_ALT FTA ON (FTA.FATREF= FT.SIRANO)
JOIN CARIGEN CR ON (CR.CRK= FT.CRK)
WHERE FT.IPTAL=0
ORDER BY 1,2


Hata sutunu: KTUTAR sutunu
kodu :

Kod: Tümünü seç

Msg 8152, Level 16, State 9, Line 1
String or binary data would be truncated.
The statement has been terminated.

(0 row(s) affected)
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: insert işlemi esnasında hata

Mesaj gönderen sabanakman »

String bir alanda sınırı aşıp, o alan boyutundan uzun veri insert edilmeye çalışılıyor demiş. Muhtemelen YILREF alanına yazılacak değer olabilir ama alanlarınızı ve eklenmeye çalışan kayıtlarınızı incelemeden net cevap veremem. Select sorgusundan çıkan değerlerinizi kontrol etmenizde fayda var.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert işlemi esnasında hata

Mesaj gönderen denizfatihi »

Teşekkür ederim...
speed60
Üye
Mesajlar: 53
Kayıt: 07 Eki 2011 08:07

Re: insert işlemi esnasında hata

Mesaj gönderen speed60 »

Kod: Tümünü seç

ORDER BY 1,2
bu satır geçersiz olsa da olur olmasa da sql server bu satırı göz ardı edecek çünki alan numarası tek alan için geçerlidir 1 ve 2 alana göre dizmez

Kod: Tümünü seç

ORDER BY 1
olursa dizer
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert işlemi esnasında hata

Mesaj gönderen denizfatihi »

Mysql ve firebirde de göz önüne alıyordu oradan kalma bir alışkanlık , farklı database lerde durum değişiyor.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: insert işlemi esnasında hata

Mesaj gönderen sabanakman »

Dilediğiniz kadar alanı, o alana ait sıra numarasını kullanarak sıralayabilirsiniz. Bu kullanım şeklinde herhangi bir kısıtlama bulunmamaktadır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
speed60
Üye
Mesajlar: 53
Kayıt: 07 Eki 2011 08:07

Re: insert işlemi esnasında hata

Mesaj gönderen speed60 »

SIRA EVRAKTARIHI VADE EVRAKNO FATEVRAKNO
1 12.12.2014 3 1112024 989
2 11.12.2014 2 1112025 990
3 09.12.2014 2 1112021 986
bu şekilde karışık kayıtlarınız var

Şaban hocam varsayalım dediğiniz gibi çok alanlı order by yaptığınızda bu sıralamada hiç bir şey değişmeyecektir.
ben o nedenle bir üst mesajımda öyle yazdım
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: insert işlemi esnasında hata

Mesaj gönderen sabanakman »

Evet, bu kayıtlardan oluşan özel bir duruma ait bu tespit doğru bir tespittir. Bu tespitten sonra aşağıdaki gibi bir genel anlam çıkarılmasına istinaden bir düzeltme yapma gereği gördüm .
denizfatihi yazdı:Mysql ve firebirde de göz önüne alıyordu oradan kalma bir alışkanlık , farklı database lerde durum değişiyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: insert işlemi esnasında hata

Mesaj gönderen varyemez »

Benim de bir sorum var , başka konu başlığı açmadan sorayım..

INSERT INTO TABLO2 (BARKOD,SERINO)
(SELECT BARKOD,SERINO FROM TABLO1 WHERE TABLO1.FNO=2);

böyle bir insert işlemi yapan sp var. BARKOD+SERINO benzersiz.
Sorum şu:
tablo2 ye mükerrer kayıt girilmesin . aynı BARKOD+SERINO lu kayıt varsa BEGIN CATCH ..... ile rollback yapacak
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert işlemi esnasında hata

Mesaj gönderen denizfatihi »

Şartlar kısmına

Kod: Tümünü seç

WHERE  BARKOD+SERINO NOT IN (SELECT  BARKOD+SERINO FROM  tablo2  
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: insert işlemi esnasında hata

Mesaj gönderen varyemez »

Teşekkürler @denizfatihi , çalışıyor güzel. etkilenen satır sayısını @@ROWCOUNT ile alıyorum . 2 olasılıkta sıfır gelir. birincisi hiç ekleme yapmamışsa , ikincisi de tablo2 de mükerrer olacak kayıt bulduğu için hiç ekleme yapmamışsa. Bunları nasıl ayırdederiz. Yani '2 nolu fiş bulunamadı' sonucunda sıfır row çıkacak. 'Bu kayıtlar daha önce eklenmişti' sonucunda da sıfır rows gelecek. Bir insert olayında genellikle 10 - 500 hatta çok daha fazlası tablo1 den select edilip ekleniyor.
Cevapla