En iyi yanıtlayıcılar
Stored Procedures olusturamama hatası

Soru
-
Acaba Bu koda bakarak bana nerde hata yaptıgımı söylermisiniz ? Hep Hata Veriyor aldıgım hata
Msg 102, Level 15, State 1, Procedure sp_personelkayıt, Line 8
Incorrect syntax near 'nchar'.
Çözemedim :(
CREATE PROCEDURE sp_personelkayıt
@[Adı Soyadı] [nchar](25) ,
@[Tc] [nchar](25) ,
@[Adresi] [nchar](10) ,
@[ülke] [nchar](25) ,
@[il] [nchar](25) ,
@[İlçe] [nchar](25) ,
@[Posta Kodu] [nchar](25) ,
@[Banka] [nchar](25) ,
@[Sube] [nchar](25),
@[Tel] [nchar](25) ,
@[Cep] [nchar](25) ,
@[Birimi] [nchar](25) ,
@[BabaAdı] [nchar](25) ,
@[Anne Adı] [nchar](25) ,
@[Mezuniyet] [nchar](25) ,
@[EnsonMezunolduguokul] [nchar](25) ,
@[Ehliyet] [nchar](25) ,
@[İbanNo] [nchar](25) ,
@[Resim] [image]
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO personelkayıt
( [Adı Soyadı], Tc, Adresi, ülke, il, İlçe, [Posta Kodu], Banka, Sube, Tel, Cep, Birimi, BabaAdı, [Anne Adı], Mezuniyet, EnsonMezunolduguokul, Ehliyet, İbanNo,
Resim)
VALUES ( N'[Adı Soyadı]', N'Tc', N'Adresi', N'ülke', N'il', N'İlçe', N'[Posta Kodu]', N'Banka', N'Sube', N'Tel', N'Cep', N'Birimi', N'BabaAdı', N'[Anne Adı]', N'Mezuniyet',
N'EnsonMezunolduguokul', N'Ehliyet', N'İbanNo')
END
GO
Hayat Bazen Yasamaya Deger Oldugu Kadar Ölmeyede Deger
- Düzenleyen Kerem ALAÇAM 23 Şubat 2013 Cumartesi 17:19
Yanıtlar
-
Parametreler yanlış tanımlanmış, aşağıdaki gibi olmalı:
CREATE PROCEDURE sp_personelkayıt
@AdiSoyadi nchar(25) ,
@Tc nchar(25) ,
...Ayrıca VALUES kısmında da Önay'ın da belirttiği gibi parametreler kullanılmalı, yoksa ne anlamı var parametrelerin?
Not: Parametre/değişken adı olarak Türkça karakter kullanmazsan garip hatalar ve sorunlarla karşılaşma şansın azalır.
Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com
- Yanıt Olarak Öneren eralper 25 Şubat 2013 Pazartesi 12:11
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 1 Mart 2013 Cuma 15:48
Tüm Yanıtlar
-
- Benim gördüğüm 2 hata var, [nchar] olan yerleri nchar olarak değiştirin
- values içindeki N['Adı Soyadı'] gibi olan yerlerde yanlış olmuş, @[Adı Soyadı] şeklinde değiştirin
Bir Öneri: nchar veritipi fixed-length tiptir, ilerde sorgularınızda size sorunlar çıkarabilir. Örneğin Ad alanına Ali kaydederken yanına 22 adet boşluk karakteride kaydeder, bunun yerine nvarchar(25) kullanın. Ama IBAN için char(26) uygundur çünkü tüm iban numaraları 26 karakterdir. Benzer şekilde TC Kimlik no da char(11) olabilir çünkü tüm tc kimlik nolar 11 karakterdir. Tc kimlik no için nchar yazmaya gerek yok çünkü n(national) yani utf-8 karakterleri destekler bunada gerek yok. Posta kodu da char(5) saklanabilir.
Yanlış anlamazsanız bi eleştiri yapayım, tablo yapınız oldukça kötü. Veri tipleri yanlış tarih alanını char saklarsanız sıralama yada tarih sorgularınız düzgün çalışmaz. İl ve ilçeyi ayrı ayrı kaydetmeye gerek yok, İller ve İlçeler adında 2 tablonuz olmalı , bu tabloda sadeçe ilçe_id saklamalısınız.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
-
Tesekkür ederim
[nchar] olan adları temizledim gene aynı hatayı verdi
verilen uzunlukları weter uni gelen talimatlara göre hazırladıgım için :( onlara mudahale etme sansım yok ben olsam daha farklı bir çalısma yapardım ama bu projeyi bir şekilde bitirmem lazım :(
bu sekilde olmak zorunda farklı bir önerin ollursa cok sevinirim
SELECT dbo.ülke.NAME AS Ülke, dbo.il.NAME AS Şehir, dbo.ilçe.NAME AS ilçe, dbo.Vergidairesi.NAME, dbo.Postakodları.CODE
FROM dbo.ülke INNER JOIN
dbo.il ON dbo.ülke.Code = dbo.il.COUNTRYCODE INNER JOIN
dbo.ilçe ON dbo.il.ID = dbo.ilçe.CITYCODE INNER JOIN
dbo.Vergidairesi ON dbo.il.NAME = dbo.Vergidairesi.ADDR1 INNER JOIN
dbo.Postakodları ON dbo.ilçe.CITYCODE = dbo.Postakodları.CITYCODEÜlke şehir İlçe Vergi Dairesi Posta Kodu
TÜRKİYE Ankara Akyurt AYAŞ MAL MÜDÜRLÜĞÜ 91183
Hayat Bazen Yasamaya Deger Oldugu Kadar Ölmeyede Deger
-
Parametreler yanlış tanımlanmış, aşağıdaki gibi olmalı:
CREATE PROCEDURE sp_personelkayıt
@AdiSoyadi nchar(25) ,
@Tc nchar(25) ,
...Ayrıca VALUES kısmında da Önay'ın da belirttiği gibi parametreler kullanılmalı, yoksa ne anlamı var parametrelerin?
Not: Parametre/değişken adı olarak Türkça karakter kullanmazsan garip hatalar ve sorunlarla karşılaşma şansın azalır.
Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com
- Yanıt Olarak Öneren eralper 25 Şubat 2013 Pazartesi 12:11
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 1 Mart 2013 Cuma 15:48
-
Tablo içinde kolon isimlerini eskiden " " içinde iki kelime olarak kullanabiliyorduk, şimdi [] içinde kolon isimlerinde space karakterini kullanabiliyoruz.
Ama Ekrem bey'in dediği gibi SP içindeki parametrelerin isimlerinde boşluk karakterini kullanamıyoruz.
Parametrelerimizi @Kelime1Kelime2 gibi boşluk bırakmadan tanımlamak zorundayız.