我的存储过程有点问题。它给了我这个错误:
将varchar值'Cluj-Napoca'转换为数据类型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'
如果有帮助我可以告诉你它的用途但是我不想浪费时间......有人可以帮忙吗? ......期待;)
PS:
现在还有另一个问题:
INSERT语句与FOREIGN KEY约束“FK__Vasarlas__VevoID__47E69B3D”冲突。冲突发生在数据库“master”,表“dbo.Vevo”,列'VevoID'。
这两个表看起来像这样:
Vasarlas
(VevoID, JatekID, SzallitoID, Darab, Datum
)Vevo
(VevoID, VevoNev, OrszagID, Cim
)答案 0 :(得分:3)
我的猜测是您的表架构与您的插入列不匹配,请尝试明确指定列
INSERT INTO Vasarlas(col1, col2, col3, col4, col5)
VALUES (@maxId+1, @JID, @SZID, @Darab, @Datum)
获取列列表的最简单方法是从SQL Server Management Studio中的资源管理器中拖放它们。
答案 1 :(得分:0)
你有三个varchar参数,@ Nev,@ Cy和@Datum。
似乎您尝试将其中一个插入整数列。 检查Vasarlas和Vevo表或更好的陷阱开始结束块以确定哪个插入语句导致错误...
顺便说一下; EXEC UjVasarlas 2,2,'你的名字','你的城市',2,'2013-01-22' 无法返回“Cluj-Napoca”字符串的错误,该字符串未包含在您发送的参数中。如果“Cluj-Napoca”在“你的城市”空间,那就意味着你的问题是@Cim param。 而且你只在一个地方使用它,在其他博客中; 插入Vevo VALUES(@ maxId + 1,@ Nev,@ Cell,1)
检查表 Vevo ,可能是该表的第3列(你试图插入@Cim param)是INT not VARCHAR