Hallo Zusammen,
ich wünsche euch allen ein frohes neues Jahr 2012!
Ich habe ein Probem mit der Weitergabe von Fehlermeldungen.
Der Testaufruf lautet:
Code:
DECLARE @errmsg VARCHAR;
EXEC setActivityTargetStart 'F9EAE9B7-F544-40E9-A06A-6EF52E770E6E', @errmsg OUTPUT
SELECT @errmsg
Hier wird die problematische Funktion aufgerufen, in @errmsg sollte die Fehlermeldung sein
Code:
ALTER PROCEDURE setActivityTargetStart
@ProjectID uniqueidentifier,
@errmsg VARCHAR(4000) OUTPUT
AS
BEGIN
DECLARE @start DATETIME;
-- prüfe auf mögliche Fehler
EXEC pruefeAllocations @ProjectID, @errmsg;
-- wenn keine Fehlermeldung vorliegt, starte berechnung
-- IF @errmsg <> ''
-- BEGIN
-- SELECT @start = (SELECT [Start]
-- FROM
-- [RcProject].[dbo].[Project]
-- WHERE
-- ProjectID = @ProjectID);
--
-- IF @start IS NULL
-- EXEC dbo.calcStartDate @ProjectID
-- ELSE
-- EXEC dbo.calcTargetDate @ProjectID
-- END;
END
GO
@errmsg wird richtig gefüllt, doch nicht richtig nach oben weitergereicht
Code:
ALTER PROCEDURE pruefeAllocations (@ProjectID uniqueidentifier, @errmsg VARCHAR(4000) OUTPUT)
AS
BEGIN
DECLARE @actName VARCHAR(255);
DECLARE @actDuration VARCHAR; --war eigentlich ints, allerdings wollte er die nicht selber kovertieren
DECLARE @allDuration VARCHAR; --war eigentlich ints, allerdings wollte er die nicht selber kovertieren
SET @errmsg = '';
-- prüfe, ob zugewiesenen PT = Activityaufwand PT ist
DECLARE curAlloc CURSOR FAST_FORWARD
FOR
SELECT act.Name
, count(*) AS allocDuration
, act.Duration AS Duration
FROM
calcResourceActivity calc
JOIN VActivity act
ON calc.ActivityID = act.ActivityID
GROUP BY
act.Name
, act.Duration
HAVING
count(*) != act.Duration;
OPEN curAlloc
FETCH NEXT FROM curAlloc INTO @actName, @actDuration, @allDuration
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @errmsg = @errmsg+'\nActivity '''+@actName+''' is not properly allocated ('+@actDuration+' of '+@allDuration+' allocated).';
FETCH NEXT FROM curAlloc INTO @actName, @actDuration, @allDuration
END
CLOSE curAlloc
DEALLOCATE curAlloc
END
GO
Hat jemand eine Idee woran es liegt, dass ich ein NULL erhalte obwohl der String zusammengebaut wird? Ich habe es erst mittels RETURN versucht, doch kann man da nur INTs zurückgeben, entsprechend hatte ich auch nur den ersten Buchstaben in der Ausgabe.
Vielen Dank, Norbert