2013-01-25 152 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