December 27, 2005 at 8:20 am
I have the following code I'm testing that will eventually become a stored procedure. I'm running it in QA and I get the error message "A RETURN statement with a return value cannot be used in this context." when I execute the query. I'd swear I've used RETURN in SP's before. Any ideas?
DECLARE @cat int
DECLARE @mod int
DECLARE @sub int
DECLARE @ver int
DECLARE @desc varchar(255)
DECLARE @na int
DECLARE @ra int
DECLARE @pa int
DECLARE @filename varchar(255)
SET @cat=3
Set @mod=5
set @sub=3
set @ver=1
set @desc='New Module'
set @na=1
set @ra=1
set @pa=1
set @filename='New_Filename'
DECLARE @rc int
DECLARE @prevdesc varchar(255)
DECLARE @err int
DECLARE @rows int
BEGIN TRANSACTION
SELECT @prevdesc FROM Submodules WHERE Category=@cat AND [Module]=@mod AND Submodule=@sub AND Version>=@ver
IF upper(@prevdesc)=upper(@desc) BEGIN
-- Insert new Version of same Submodule
print 'new Version'
INSERT INTO #temp
SELECT * FROM Submodules
WHERE Category=@cat AND [Module]=@mod AND Submodule=@sub AND Version>@ver
SET @err=@@error
SET @rows=@@rowcount
IF @err<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 3
END
select * from #temp
IF @rows > 0 BEGIN
DELETE FROM Submodules
WHERE Category=@cat AND [Module]=@mod AND Submodule=@sub AND Version>@ver
set @rc=@@error
Print 'Deleted: '+cast(@@rowcount as varchar(5))
IF @@error<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 4
END
UPDATE #temp SET Version=Version+1
select * from #temp
IF @@error<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 5
END
INSERT INTO Submodules
SELECT * FROM #temp
IF @@error<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 6
END
END
DROP TABLE #temp
INSERT INTO Submodules (Category, [Module], Submodule, Version, [Description], NA, RA, PA, [Filename])
Values(@cat, @mod, @sub, @ver+1, @desc, @na, @ra, @pa, @filename)
IF @@error<>0 @@rowcount<>1 BEGIN
ROLLBACK TRANSACTION
IF @@rowcount<>1 Return 2
IF @@error<>0 Return 1
END
select * from submodules where Category=@cat AND [Module]=@mod AND Submodule=@sub AND Version=@ver
END
ELSE BEGIN
-- Insert new Submodule
print 'New Module'
INSERT INTO #temp
SELECT * FROM Submodules
WHERE Category=@cat AND [Module]=@mod AND Submodule>@sub
SET @err=@@error
SET @rows=@@rowcount
IF @err<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 7
END
select * from #temp
IF @rows > 0 BEGIN
DELETE FROM Submodules
WHERE Category=@cat AND [Module]=@mod AND Submodule>@sub
print 'Deleted: '+cast(@@rowcount as varchar(5))
IF @@error<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 8
END
UPDATE #temp SET Submodule=Submodule+1
IF @@error<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 9
END
select * from #temp
INSERT INTO Submodules
SELECT * FROM #temp
IF @@error<>0 BEGIN
ROLLBACK TRANSACTION
RETURN 10
END
END
DROP TABLE #temp
INSERT INTO Submodules (Category, [Module], Submodule, Version, [Description], NA, RA, PA, [Filename])
Values(@cat, @mod, @sub+1, 1, @desc, @na, @ra, @pa, @filename)
IF @@error<>0 OR @@rowcount<>1 BEGIN
ROLLBACK TRANSACTION
IF @@rowcount<>1 Return 2
IF @@error<>0 Return 1
END
select * from submodules where Category=@cat AND [Module]=@mod AND Submodule>=@sub
END
ROLLBACK TRANSACTION
RETURN 0
December 27, 2005 at 8:23 am
That was dumb. Re-reading my own post, I'm in QA... Of course I can't use RETURN.
Sheesh!!! Virtual Monday.
December 27, 2005 at 10:03 am
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy