Avatar billede simsen Mester
29. marts 2011 - 11:42 Der er 6 kommentarer og
1 løsning

Sætte 0 ved null værdi fungerer ikke

Hej jeg har nedenviste stored procedure.

Hvad jeg vil opnå; Den henter rankOrder ud - hvis der ingen rækker findes skal den sætte @num = 1 når der indsættes række. Hvis der findes rækker, skal den sætte @num til at være 1 højere end antallet af rækker.

Den sidste del går godt...Hvis der findes rækker i tabellen tilføjer den den nye række med rankOrder til at være et nummer højere end antal rækker....Men hvis der ikke findes rækker i tabellen sætter den rankOrder (@num) til at være null.....Det skulle være 1, den skulle sætte i stedet.

Håber nogen kan hjælpe mig.

mvh
simsen :-)

Min stored procedure:

ALTER PROCEDURE [dbo].[XXTestBugViewXX]
    @bugViewTypeId AS INTEGER,
    @bugViewColumnId AS INTEGER,
    @UserId AS NVARCHAR(MAX)
   
AS
BEGIN
    DECLARE @v_bugViewId AS INTEGER
    DECLARE @num AS INTEGER

    SET @v_bugViewId = 0
    SET @num = 0

    BEGIN TRANSACTION
    BEGIN TRY
        BEGIN
            SELECT @num = MAX(rankOrder)
            FROM Ansibug_BugView
            WHERE UserId = @UserId AND bugViewTypeId = @bugViewTypeId
           
            IF @num = NULL
            BEGIN
                SET @num = 0
            END
           
            SET @num = @num + 1
           
            INSERT INTO AnsiBug_BugView (bugViewTypeId, bugViewColumnId, UserId, rankOrder)
                VALUES (@bugViewTypeId, @bugViewColumnId, @UserId, @num)

            SET @v_bugViewId = @@IDENTITY
        END

        COMMIT TRANSACTION
    END TRY
    BEGIN CATCH
        ROLLBACK TRANSACTION
    END CATCH

    SELECT @v_bugViewId AS bugViewId
END
Avatar billede hrc Mester
29. marts 2011 - 13:25 #1
Hvad med dette her:

SELECT @num = IsNull(MAX(rankOrder),0) + 1
FROM Ansibug_BugView
WHERE UserId = @UserId
  AND bugViewTypeId = @bugViewTypeI

INSERT INTO AnsiBug_BugView (bugViewTypeId, bugViewColumnId, UserId, rankOrder)
VALUES (@bugViewTypeId, @bugViewColumnId, @UserId, @num)
SET @v_bugViewId = @@IDENTITY
Avatar billede mcb2001 Nybegynder
29. marts 2011 - 15:21 #2
du bør skrive:
[code]
IF @num = NULL
BEGIN
SET @num = 0
END
[/code]

om til

[code]
IF @num IS NULL
BEGIN
SET @num = 0
END
[/code]
Avatar billede simsen Mester
29. marts 2011 - 15:50 #3
Jeg har brugt mcb2001's forslag - smid et svar og tak for hjælpen :-)
Avatar billede mcb2001 Nybegynder
29. marts 2011 - 16:03 #4
Velbekommen
Avatar billede hrc Mester
29. marts 2011 - 17:31 #5
Det er i orden, jeg synes stadig mit bud er bedre, i alt fald indtil en viser at løsningen ikke virker.
Avatar billede mcb2001 Nybegynder
29. marts 2011 - 17:52 #6
din løsning er måske mere elegant, men mit er et direkte svar på hvor det er det går galt, så simsen har en chance for at lære noget nyt.

Din kunne så være næste skridt på vejen :-)
Avatar billede hrc Mester
29. marts 2011 - 20:25 #7
Jeg kom også til at tænke på at jeg ikke havde påpeget fejlen. Som sådan er det helt korrekt du får points.
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