1

ストアドプロシージャに少し問題があります。それは私にこのエラーを与えています:

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'

それが助けになっているなら、私はそれが何のためにあるのかをあなたに言うことができますが、私はそれで時間を無駄にしたくありませんでした...誰かが助けることができますか?...予想されるthx;)

PS:

今、それは別の問題を抱えています:

INSERTステートメントがFOREIGNKEY制約「FK__Vasarlas__VevoID__47E69B3D」と競合しました。データベース「master」、テーブル「dbo.Vevo」、列「VevoID」で競合が発生しました。

2つのテーブルは次のようになります。

  • VasarlasVevoID, JatekID, SzallitoID, Darab, Datum
  • VevoVevoID, VevoNev, OrszagID, Cim
4

2 に答える 2

3

私の推測では、テーブルスキーマが挿入した列と一致しないため、列を明示的に指定してみてください

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

列のリストを取得する最も簡単な方法は、SQL ServerManagementStudioのエクスプローラーから列をドラッグアンドドロップすることです。

于 2013-01-25T00:33:20.470 に答える
0

@ Nev、@ Cim、@Datumの3つのvarcharパラメータがあります。

それらの1つを整数列に挿入しようとしているようです。VasarlasおよびVevoテーブルを確認するか、より適切なトラップ開始エンドブロックをチェックして、エラーの原因となる挿入ステートメントを特定してください...

ところで; EXEC UjVasarlas 2、2、'Your Name'、'Your City'、2、 '2013-01-22'は、送信したパラメーターに含まれていない"Cluj-Napoca"文字列のエラーを返すことができません。

「Cluj-Napoca」が「Yourcity」スペースにある場合、問題は@Cimparamであることを意味します。そして、あなたはそれをただ一つの場所で、他のブログで使用します; Vevoの値に挿入(@ maxId + 1、@ Nev、@ Cim、1)

Table Vevoを確認してください。おそらく、そのテーブルの3番目の列(@Cim paramを挿入しようとします)は、VARCHARではなくINTです。

于 2013-01-25T00:38:01.583 に答える