![]() |
Datenbank: MSSQL • Version: 2008 • Zugriff über: SQL Server Management Studio 2008 R2
Rückgabe von VARCHAR aus StoredProcedure
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:
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.
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 Vielen Dank, Norbert |
AW: Rückgabe von VARCHAR aus StoredProcedure
Du must auch beim Aufrufen angeben, das es sich um einen OUTPUT Parameter handelt
Code:
EXEC MyProcedure @MyVar, @MyReturnVar output
|
AW: Rückgabe von VARCHAR aus StoredProcedure
Top das wars. Vielen Dank!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz