Jag har gjort det tusen gången utab problem, men nu blir det tjall. Kan någon hitta felet ? SET AgarID = @@identity har två AT-tecken framför Identity, men det visas inte här... Jag hittade en lösning som funkar. Felet var annars att det saknades lite @-tecken här och var.Return från Stored procedure
Följande SP kollar om bolagsnamnet existerar - och returnerar i så fall dess unika ID (RecID)
Om det inte finns sätts det in i tabellen och den nya radens ID returneras.
Alter Proc spmom_SkapaAgare bolagsnamn varchar(50)
AS
Declare AgarID integer
SELECT TOP 1 AgarID = RecID FROM agardata WHERE bolagsnamn = bolagsnamn
IF Rowcount = 0
BEGIN
INSERT INTO agardata (bolagsnamn, skapadav, uppdateradav) VALUES (bolagsnamn,'johan','johan')
SET AgarID = @@identity
END
RETURN AgarID
GO
Jag får dock inte tillbaka något värde:
Svaret blir bara följande
The command(s) completed successfully.
OBS! SET AgarID = @@identity har två AT-tecken framför Identity - men det syns inte här...
MS SQL 2000.
Någon som kan hjälpa?Sv: Return från Stored procedure
JohanSv:Return från Stored procedure
Avslutar Proc med SELECT RecID FROM agardata WHERE RecID = @AgarIDSv: Return från Stored procedure
<code>
Alter Proc spmom_SkapaAgare @bolagsnamn varchar(50)
AS
Declare @AgarID integer
SELECT TOP 1 @AgarID = RecID FROM agardata WHERE bolagsnamn = @bolagsnamn
IF @@Rowcount = 0
BEGIN
INSERT INTO agardata (bolagsnamn, skapadav, uppdateradav) VALUES (@bolagsnamn,'johan','johan')
SET @AgarID = @@identity
END
RETURN @AgarID
GO
</code>
Men det fungerar som du märkte själv att returnera värdet i ett recordset också, men det är bättre att göra det med returparameter så att proceduren kan köras utan att skapa rowsets tillbaka. Lägg isf till SET NOCOUNT ON allra först i din procedur också.