2013-01-25 6 views
1

J'ai un petit problème avec ma procédure stockée. Il me donne cette erreur:Procédure stockée SQL Server - erreur de conversion

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

Voici mon code:

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' 

Si ça aide je peux vous dire ce qu'il est pour, mais je ne l'ai pas voulu perdre de temps avec ça ... quelqu'un peut-il aider? ... thx prévu;)

PS:

Maintenant, il a un autre problème:

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

les deux tableaux ressemblent à ceci:

  • Vasarlas (VevoID, JatekID, SzallitoID, Darab, Datum)
  • Vevo (VevoID, VevoNev, OrszagID, Cim)
+0

Veuillez ne pas stocker les dates sous forme de chaînes (comme vous semblez le faire avec le 6ème paramètre ici). La conversion de la date (heure) s en et à partir des chaînes a tendance à introduire des bogues. SQL Server dispose de types de données spécifiques pour le stockage des dates et des heures. –

Répondre

3

Je dirais que votre schéma de la table ne correspond pas à des colonnes de votre insert, essayez de spécifier vos colonnes explicitement

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

La meilleure façon d'obtenir votre liste des colonnes est de les glisser-déposer depuis l'explorateur dans SQL Studio de gestion de serveur.

+1

thx beaucoup ... c'était le problème;) – spd92

+1

@ SPD92 - Alors s'il vous plaît marquer la réponse comme acceptée. – MuhammadHani

0

vous avez trois paramètres varchar, @Nev, @Cim et @Datum.

il semble que vous essayiez d'insérer l'un d'entre eux dans une colonne entière. vérifier les tables Vasarlas et Vevo ou mieux piéger les blocs de fin de début pour déterminer quelle instruction d'insertion provoque l'erreur ...

en passant; EXEC UjVasarlas 2, 2, 'Votre nom', 'Votre ville', 2, '2013-01-22' ne peut pas renvoyer d'erreur pour la chaîne "Cluj-Napoca" qui n'est pas incluse dans les paramètres que vous avez envoyés. Si "Cluj-Napoca" se trouve dans l'espace "Votre ville", cela signifie que votre problème est @Cim param. Et vous l'utilisez dans un seul endroit, dans un autre blog; INSERT INTO VALEURS Vevo (@ maxid + 1, @Nev, @Cim, 1)

vérifier le tableau Vevo, probablement 3ème colonne de la table (qui u essayer d'insérer @Cim param) est INT pas VARCHAR

+0

thx: D ma commande était désactivée;)) – spd92