πρόβλημα με procedure-δρομείς

Συζητήσεις για τον Microsoft SQL Server

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Anastasia_M
Δημοσιεύσεις: 13
Εγγραφή: 04 Ιουν 2006 23:53

πρόβλημα με procedure-δρομείς

Δημοσίευση από Anastasia_M » 06 Ιουν 2006 00:47

Καλησπέρα.
Έχω τον πίνακα 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 έχει πέντε πλειάδες, στην εκτέλεση παραλείπεται η πρώτη.

Μήπως μπορείτε να με βοηθήσετε να εμφανίζω και την πρώτη?
Ευχαριστώ.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27621
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

πρόβλημα με procedure-δρομείς

Δημοσίευση από cordis » 06 Ιουν 2006 12:59

μπορείς αυτήν την procedure να την περιγράψεις σε φυσική γλώσσα;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

πρόβλημα με procedure-δρομείς

Δημοσίευση από dva_dev » 06 Ιουν 2006 13:20

Εχεις ένα FETCH μέσα στο WHILE.
Βγάλε το από την αρχή του while (αμέσως μετά το begin) και βάλε το στο τέλος (αμέσως πριν το end)

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27621
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

πρόβλημα με procedure-δρομείς

Δημοσίευση από cordis » 06 Ιουν 2006 13:42

γιατί; βλέπεις να υπάρχει γενικά κάποια χρησιμότητα στον cursor έτσι όπως είναι η δομή της procedure; γι' αυτό ας μας γράψει σε φυσική γλώσσα το τι περιμένει να κάνει, γιατί και στο άλλο post είδα μια σύγχυση ως προς το πως η SQL λειτουργεί.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Anastasia_M
Δημοσιεύσεις: 13
Εγγραφή: 04 Ιουν 2006 23:53

πρόβλημα με procedure-δρομείς

Δημοσίευση από Anastasia_M » 06 Ιουν 2006 22:31

Καλησπέρα σας...
Ευχαριστώ πολύ για τις διευκρινίσεις που μου δώσατε, τελικά το πρόβλημα μου λύθηκε...γνωρίζω ότι αυτή η λύση δεν είναι η καλύτερη αλλά έπρεπε να το κάνω έτσι..σας ευχαριστώ πολύ και πάλι..

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27621
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

πρόβλημα με procedure-δρομείς

Δημοσίευση από cordis » 07 Ιουν 2006 13:41

απλά ο κέρσορας έτσι όπως τον έχεις δεν έχει καμία απολύτως λειτουργικότητα. είτε τον έχεις είτε όχι το ίδιο αποτέλεσμα θα πάρεις...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

Επιστροφή στο “MS SQL Server”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης