[ sulja @ 20.12.2004. 13:37 ] @
Imam problem sa stored procedurom koja upisuje slog u bazu, ali ne vraca ID pri insertovanju

Kod ide odprilike ovako nekako

create stored procedure spUserAdd

(
@UserName VARCHAR(50),
@UserPassword VARCHAR(50)
)
as

insert into Korisnici(UserName,UserPassword) values (@UserName,@UserPassword)
select @@IDENTITY

go


[ jablan @ 20.12.2004. 14:01 ] @
Koliko znam, parametri se ne navode u zagradi.

Jesi li siguran da imaš identity polje u toj tabeli?

Kako posle čitaš ono što ti vrati procedura?

P.S. Ovo treba u MSSQL podforum.

Ili u PgSQL podforum, vidim da i tamo postoji @@IDENTITY
[ Zidar @ 20.12.2004. 15:55 ] @
Ako je u pitanju MS SQL, vidi ovo:
Code:

create  procedure spUserAdd
(
@UserName VARCHAR(50),
@UserPassword VARCHAR(50)
)
as

insert into tblTest(UserID,Password) values (@UserName,@UserPassword)
---- select @@IDENTITY
RETURN @@IDENTITY  
---- Umesto @@Identity u MS SQL je bolje koristiti SCOPE_Identity() 
go

---- Poziv procedure koji ne vraca nista:
EXECUTE spUserAdd 'Djoka','Djokin Password'

---- Poziv koji preuzima vrednost iz procedure:
DECLARE @Retval AS BigInt
EXECUTE @Retval=spUserAdd 'Djoka','Djokin Password'
SELECT @Retval AS 'Vrednost vracena iz procedure'

[ Simke @ 20.12.2004. 18:22 ] @
Mozda je najlakse da koristis proceduru koja ima output parameter, jer je lakse procitati rezultat iz parametra nego iz data seta.

Znaci:

Code:

create stored procedure spUserAdd

(
@UserName VARCHAR(50),
@UserPassword VARCHAR(50),
@UserID INT OUTPUT
)
as

insert into Korisnici(UserName,UserPassword) values (@UserName,@UserPassword)
SET @UserID = @@IDENTITY

go