Я сделал хранимую процедуру в SQL SERVER. Когда я вызываю хранимую процедуру в приложении c#, возникает следующая ошибка: Подзапрос возвратил более 1 значения. Это недопустимо, когда подзапрос следует =,! =,,> = Или когда подзапрос используется в качестве выражения
. Я не понимаю, почему возникает эта ошибка, потому что я возвращаю 1 одиночное значение INT.
ALTER PROCEDURE [dbo].[spToevoegenUitslag]
@intPersoonID INT,
@intPersoonIDSnelsteRonde INT,
@intPersoonIDPolePosition INT,
@intGrandPrixID INT,
@intPuntenID INT,
@intSeizoenID INT,
@intID INT = NULL
AS
BEGIN
--Toevoegen punten van uitslag GrandPrix
SELECT @intID = COUNT(ID) + 1 FROM tblPuntenCoureur
INSERT INTO tblPuntenCoureur (ID, PersoonID, GrandPrixID, PuntenID, SeizoenID)
VALUES (@intID, @intPersoonID, @intGrandPrixID, @intPuntenID, @intSeizoenID)
--Toevoegen deelnemers van de GrandPrix
SELECT @intID = COUNT(ID) + 1 FROM tblGrandPrixPersoon
INSERT INTO tblGrandPrixPersoon (ID, GrandPrixID, PersoonID)
VALUES (@intID, @intGrandPrixID, @intPersoonID)
IF (SELECT ID FROM tblSnelsteRonde WHERE GrandPrixID = @intGrandPrixID AND SeizoenID = @intSeizoenID) IS NULL
BEGIN
SELECT @intID = COUNT(ID) + 1 FROM tblSnelsteRonde
INSERT INTO tblSnelsteRonde (ID, PersoonID, intPunt, GrandPrixID, SeizoenID)
VALUES (@intID, @intPersoonIDSnelsteRonde, 1, @intGrandPrixID, @intSeizoenID)
END
IF (SELECT ID FROM tblPolePosition WHERE GrandPrixID = @intGrandPrixID AND SeizoenID = @intSeizoenID) IS NULL
BEGIN
SELECT @intID = COUNT(ID) + 1 FROM tblPolePosition
INSERT INTO tblPolePosition (ID, PersoonID, GrandPrixID, SeizoenID)
VALUES (@intID, @intPersoonIDPolePosition, @intGrandPrixID, @intSeizoenID)
END
RETURN 1 --Toevoegen uitslag gelukt
END
c# код
using (SqlCommand cmd = new SqlCommand("spToevoegenUitslag", verbinding))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@intPersoonID", SqlDbType.Int).Value = PersoonID[0];
cmd.Parameters.Add("@intPersoonIDSnelsteRonde", SqlDbType.Int).Value = PersoonIDSnelsteRonde;
cmd.Parameters.Add("@intPersoonIDPolePosition", SqlDbType.Int).Value = PersoonIDPolePosition;
cmd.Parameters.Add("@intGrandPrixID", SqlDbType.Int).Value = GrandPrixID;
cmd.Parameters.Add("@intPuntenID", SqlDbType.Int).Value = PuntenID[0];
cmd.Parameters.Add("@intSeizoenID", SqlDbType.Int).Value = SeizoenID;
var returnParameter = cmd.Parameters.Add("@Return", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
verbinding.Open();
cmd.ExecuteNonQuery();
var result = returnParameter.Value;
int returnwaarde = int.Parse(string.Format("{0}", result));
Console.WriteLine(returnwaarde);
string title = "Resultaat";
string message = "";
if (returnwaarde == 1)
{
message = "Uitslag succesvol toegevoegd";
MessageBox.Show(message, title);
}
verbinding.Close();