DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: C# | Thema: Falscher Rückgabewert von der StoredProcedure | Von: Markus Peklo ( 24.08.2006 14:25)

Hallo ich hab folgende StoredProcedure:

PROCEDURE dbo.prcEklNew
@MaId int, @Bez varchar(255), @PersId int,
@LfId int = -1, @KdNrId int = -1, @MaAdrIdLa int = -1,
@EklId int = -1 OUTPUT, @ErrMsg varchar(255) = '' OUTPUT
AS
SET NOCOUNT ON

DECLARE @DatTmp smalldatetime
DECLARE @EklNrLfd int
DECLARE @EklNr varchar(10)
DECLARE @Err int
BEGIN TRANSACTION

-- Neue Einkaufslistennummer ermitteln
SET @DatTmp = getdate()
-- BE + YY + KW
SET @EklNr = 'EK' + RIGHT(datepart(yy, @DatTmp),2) + RIGHT(dbo.fnGetKw(@DatTmp)+100, 2)
-- Nächste fortlaufende Nummer innerhalb der aktuellen KW
SELECT @EklNrLfd = ISNULL(MAX(CONVERT(int, RIGHT(EklNr, 4))),0) + 1 FROM dbo.tblEkl WHERE LEFT(EklNr,6) = @EklNr
-- Fortlaufende Nummer 4-stellig
SET @EklNr = @EklNr + RIGHT(@EklNrLfd + 10000, 4)
-- Einkaufsliste einfügen
INSERT INTO dbo.tblEkl (MaId, EklNr, LfId, KdNrId,
MaAdrId, Bez, PersIdBs, SysAddUser, SysAddDat)
VALUES (@MaId, @EklNr, CASE WHEN @LfId = -1 THEN NULL ELSE @LfId END, CASE WHEN @KdNrId = -1 THEN NULL ELSE @KdNrId END,
CASE WHEN @MaAdrIdLa = -1 THEN NULL ELSE @MaAdrIdLa END, @Bez, @PersId, @PersId, getdate())

SET @Err = @@ERROR
IF (@Err=0) BEGIN
-- Erzeugte ID zurückliefern
SET @EklId = @@IDENTITY
SET @ErrMsg ='Alles bestens gelaufen!'
COMMIT TRANSACTION
END ELSE BEGIN
-- Fehler zurückgeben
SET @ErrMsg = 'Fehler beim Anlegen der Einkaufsliste.'
SET @EklId = 0
ROLLBACK TRANSACTION
END

Wenn ich sie im SQL2005 Server oder in VisualStudio 2005 direkt ausführe funktioniert alles wunderbar!
Wenn ich sie jetzt hingegen über den folgenden Code aufrufe dann bekommen ich 0 von @ELKId zurück und null von @ErrMsg.

SqlCommand cmd = new SqlCommand();
int intEKLId = -1;

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "prcEklNew";
cmd.Parameters.Add(new SqlParameter("@MaID", (Int32)Session["MaId"]));
cmd.Parameters.Add(new SqlParameter("@Bez", (String)Session["EKLBez"]));
cmd.Parameters.Add(new SqlParameter("@PersId", (Int32)Session["PersID"]));

//Rückgabeparameter"bekannt machen"
cmd.Parameters.Add(new SqlParameter("@EklId", SqlDbType.Int));
cmd.Parameters["@EklId"].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(new SqlParameter("@ErrMsg", SqlDbType.Int));
cmd.Parameters["@ErrMsg"].Direction = ParameterDirection.ReturnValue;

cmd.Connection = basDbComm.getCnn();
cmd.Connection.Open();
cmd.ExecuteReader();
// Komfortfunktion übernimmt das Öffnen und Schlissen
//intEKLId = basDbComm.executeNonQuery(cmd);
intEKLId = (int)cmd.Parameters["@EklId"].Value;
String strRzID = (string)cmd.Parameters["@ErrMsg"].Value;
// Sauber schlissen
cmd.Connection.Close();

Die neue EKL wird angelegt... die ganze Funktion läuft einwandfrei durch aber die Rückgabeparameter stimmen einfach nicht:(
Ich verzweifel daran, weil ich eigentlcih haargenau die gleiche Funktion in einem anderen Projekt auch schon verwendet habe und dort geht alles.



Markus

Betreff Von Datum
AW: Falscher Rückgabewert von der StoredProcedure
Hi Markus,<br><br>weiß zwar nicht ob das des Rätsels Lösung ist aber:<br>cmd.Parameters["@EklId"].Direction = ParameterDirection.ReturnValue;<br>u. cmd.Parameters["@ErrMsg"].Direction =...
Tobi Ulm 28.08.2006 11:00
AW: AW: Falscher Rückgabewert von der...
Jo danke daran lags... hab daran schon garnicht mehr gedacht, weil ich an einem andern Teil des Porjektes gearbeitet habe...<br><br>Viel dank für den Tip hätte ich auch selber drauf kommen können. <br><br>
Markus Peklo 28.08.2006 16:15

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG