Avatar billede mjense173 Nybegynder
29. november 2006 - 12:42 Der er 8 kommentarer

Stored Procedures, variabel

Hej.

Jeg har følgende SQL:

DECLARE @id int;
EXECUTE @id = findNewId 'normal';
INSERT INTO tabel (id,name) VALUES (@id,'Jens')

Men jeg får ikke noget tal i id, det er altid 0.
Hvis man bare kører Stored Procedure:
findNewId 'normal';
Så får man et tal tal på 6 cifre.
Nogen der kan se hvad der er galt?
Avatar billede dr_chaos Nybegynder
29. november 2006 - 13:24 #1
brug:

SELECT @@id = SCOPE_IDENTITY()

i stedet for din execute
Avatar billede dr_chaos Nybegynder
29. november 2006 - 13:24 #2
hov:
SELECT @id = SCOPE_IDENTITY()
Avatar billede mjense173 Nybegynder
29. november 2006 - 13:43 #3
Jeg kan ikke bruge SCOPE_IDENTITY, da jeg skal have en værdi retur fra en Stored Procedure.
Jeg skal simpelthen bare lave en insert hvor id er givet af denne Stored Procedure.
Det virker ikke hvis man selv laver et id.
Avatar billede mjense173 Nybegynder
29. november 2006 - 13:44 #4
Det skal bruges til LXBENUMMER til C5, som ikke har autoincrement på deres ID.
Avatar billede teepee Nybegynder
29. november 2006 - 15:22 #5
Hvordan ser den der findNewId ud?
Avatar billede mjense173 Nybegynder
29. november 2006 - 15:49 #6
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[findNewId]
    @increment INT,
    @dataset CHAR(3)
AS 
BEGIN TRAN

UPDATE XALSEQ SET SEQNO = SEQNO + @increment
WHERE DATASET = @dataset
AND SEQID = 0

SELECT SEQNO - @increment
FROM XALSEQ 
WHERE DATASET = @dataset AND SEQID = 0
COMMIT
TRAN
Avatar billede dr_chaos Nybegynder
29. november 2006 - 19:20 #7
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[findNewId]
    @increment INT,
    @dataset CHAR(3),
    @ID INT OUTPUT
AS
BEGIN TRAN

UPDATE XALSEQ SET SEQNO = SEQNO + @increment
WHERE DATASET = @dataset
AND SEQID = 0

SELECT @ID=SEQNO - @increment
FROM XALSEQ
WHERE DATASET = @dataset AND SEQID = 0
COMMIT
TRAN
Avatar billede dr_chaos Nybegynder
29. november 2006 - 19:21 #8
DECLARE @id int;
EXECUTE findNewId 'normal','dataset', @id output;

sådan gør man normalt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester