Καλησπέρα.
Έχω τον πίνακα REVIEW
/*Table
Review*/
CREATE
TABLE REVIEW(
SCORE REAL
CHECK (SCORE>=0 AND SCORE<=5),
TEXT
VARCHAR(MAX),
DATE
VARCHAR(25),
CUSTOMER_ID
INT ,
LABEL
VARCHAR(9) CHECK (LABEL IN('BAD','GOOD','VERY GOOD')),
MOVIE_REVIEW
VARCHAR(50),
FOREIGN
KEY(MOVIE_REVIEW) REFERENCES MOVIES(TITLE),
FOREIGN KEY
(CUSTOMER_ID) REFERENCES CUSTOMERS(ID)
)
με τις παρακάτω εισαγωγές
INSERT
INTO
REVIEW(SCORE,TEXT,DATE,CUSTOMER_ID,LABEL,MOVIE_REVIEW)
VALUES
(1,'BLA BLA','1/6/06',6,'BAD','Munich')
INSERT
INTO
REVIEW(SCORE,TEXT,DATE,CUSTOMER_ID,LABEL,MOVIE_REVIEW)
VALUES
(2,'BLA BLA','1/6/06',6,'BAD','Munich')
INSERT
INTO
REVIEW(SCORE,TEXT,DATE,CUSTOMER_ID,LABEL,MOVIE_REVIEW)
VALUES
(3,'BLA BLA','1/6/06',6,'BAD','Munich')
INSERT
INTO
REVIEW(SCORE,TEXT,DATE,CUSTOMER_ID,LABEL,MOVIE_REVIEW)
VALUES
(4,'BLA BLA','1/6/06',6,'BAD','Munich')
INSERT
INTO
REVIEW(SCORE,TEXT,DATE,CUSTOMER_ID,LABEL,MOVIE_REVIEW)
VALUES
(5,'BLA BLA','1/6/06',6,'BAD','Munich')
και θέλω να ενημερώνεται η στήλη LABEL με βάση την τιμή που θα παίρνει κάθε
φορά η στήλη SCORE από το χρήστη. (Η τιμή του SCORE διαρκώς θα
αλλάζει). Χρησιμοποιώντας τη διαδικασία LABEL
CREATE PROCEDURE LABEL
AS
DECLARE
@LABEL
VARCHAR(9),
@SCORE INT,
@BAD INT
DECLARE
LABEL_CURSOR CURSOR FOR
SELECT
SCORE,LABEL FROM REVIEW WHERE SCORE=@SCORE;
OPEN
LABEL_CURSOR;
FETCH NEXT FROM LABEL_CURSOR
INTO @SCORE,@LABEL
WHILE
@@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM LABEL_CURSOR;
UPDATE
REVIEW
SET
LABEL='BAD'
WHERE SCORE
BETWEEN 1 AND 2;
UPDATE
REVIEW
SET
LABEL='GOOD'
WHERE SCORE
BETWEEN 3 AND 4;
UPDATE
REVIEW
SET
LABEL='VERY GOOD'
WHERE
SCORE=5;
END;
CLOSE
LABEL_CURSOR
DEALLOCATE LABEL_CURSOR
GO
EXEC LABEL
η ενημέρωση γίνεται
κανονικά αλλά υπάρχει ένα πρόβλημα. Ενώ ο πίνακας REVIEW έχει πέντε
πλειάδες, στην εκτέλεση παραλείπεται η πρώτη.
Μήπως μπορείτε να με βοηθήσετε να εμφανίζω και την πρώτη?
Ευχαριστώ.