2013-01-25 180 views
1

我的存儲過程有點問題。它給我這個錯誤:SQL Server存儲過程 - 轉換錯誤

Conversion failed when converting the varchar value 'Cluj-Napoca' to data type int.

這是我的代碼:

CREATE PROCEDURE UjVasarlas 
@JID int, 
@SZID int, 
@Nev varchar(30), 
@Cim varchar(30), 
@Darab int, 
@Datum varchar(30) 
AS 
SET NOCOUNT ON; 
DECLARE @maxId int; 
     SET @maxId = (SELECT MAX(VevoID) FROM Vevo); 
iF EXISTS (SELECT * FROM Vevo WHERE Vevo.VevoNev = @Nev) 
    begin 
     INSERT INTO Vasarlas VALUES (@maxId+1, @JID, @SZID, @Darab, @Datum) 
    end 
    else 
     INSERT INTO Vevo VALUES (@maxId+1, @Nev, @Cim, 1) 
     INSERT INTO Vasarlas VALUES (@maxId+1, @JID, @SZID, @Darab, @Datum) 

GO  

EXEC UjVasarlas 2, 2, 'Your Name', 'Your City', 2, '2013-01-22' 

如果它幫助我可以告訴你它是什麼,但我並沒有想與浪費時間......誰能幫忙? ... THX預期;)

PS:

現在它還有另一個問題:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Vasarlas__VevoID__47E69B3D". The conflict occurred in database "master", table "dbo.Vevo", column 'VevoID'.

兩個表如下所示:

  • VasarlasVevoID, JatekID, SzallitoID, Darab, Datum
  • VevoVevoID, VevoNev, OrszagID, Cim
+0

請不要將日期存儲爲字符串(因爲您似乎在這裏使用第6個參數)。將字符串轉換爲日期(時間)有導致錯誤的傾向。 SQL Server具有用於存儲日期和時間的特定數據類型。 –

回答

3

我的猜測是,你的表結構不匹配列的插入,儘量明確

INSERT INTO Vasarlas(col1, col2, col3, col4, col5) 
VALUES (@maxId+1, @JID, @SZID, @Darab, @Datum) 

指定列以得到你列的列表拖動並從資源管理器中的SQL刪除它們的最簡單方法Server Management Studio。

+1

thx很多...這是問題;) – spd92

+1

@ spd92 - 然後請將答案標記爲已接受。 – MuhammadHani

0

你有三個varchar參數,@Nev,@Cim和@Datum。

它似乎嘗試將其中一個插入到整數列。 檢查Vasarlas和Vevo表或更好的陷阱開始結束塊,以確定哪個插入語句導致錯誤...

順便說一句; EXEC UjVasarlas 2,2,'您的姓名','您的城市',2,'2013-01-22' 不能爲您發送的參數中未包含的「Cluj-Napoca」字符串返回錯誤。

如果「Cluj-Napoca」位於「您的城市」空間中,則表示您的問題是@Cim param。 而你用它ın只有一個地方,在其他博客; INSERT INTO VEVO VALUES(@ maxId + 1,@Nev,@Cim,1)

檢查表VEVO,該表(其中U嘗試插入@Cim PARAM)的可能3TH列INT不VARCHAR

+0

thx:D我的訂單已關閉;)) – spd92