Kevin Wilson wrote : 
>
>
>Why can't I use a select to set a procedure variable? It barks out this
>error where it hit the line "SET B = SELECT ..."
>
>CREATE DBPROC CLEANSNFLAGSDUPES(IN PREFIX VARCHAR(4), IN MESSAGE
>VARCHAR(1000)) AS
>VAR FID INTEGER; B VARCHAR(6); NROWS INTEGER;
>SET FID = 0;
>SET NROWS = 0;
>DECLARE C1 CURSOR FOR SELECT * FROM SNFLAGS 
>WHERE PREFIX = :PREFIX AND MESSAGE = :MESSAGE AND ACTIVE = 'Y';  
>WHILE ($rc = 0) DO
>      BEGIN
>           FETCH C1 INTO :FID;
>           IF $rc = 0 THEN
>             BEGIN
>               SET B = SELECT BODY FROM SNFLAGS WHERE FLAGID = :FID;
>               SET NROWS = SELECT COUNT(*) FROM SNFLAGS 
>                                           WHERE PREFIX = 
>:PREFIX AND BODY =
>:B 
>                                           AND MESSAGE = 
>:MESSAGE AND ACTIVE
>= 'Y';
>                IF NROWS > 0 THEN
>                  BEGIN
>                    UPDATE SNFLAGS SET ACTIVE = 'N' 
>                           WHERE PREFIX = :PREFIX AND BODY = :B 
>                                  AND MESSAGE = :MESSAGE AND 
>ACTIVE = 'Y';
>
>                    UPDATE SNFLAGS SET ACTIVE = 'Y' WHERE 
>FLAGID = :FID;
>                  END;  
>             END;
>       END;
>CLOSE C1;
>
>
>Thanks mucho for the help,
>
>Kev
>
>-- 

You cannot assign the result of a query to a variable by the assignment
statenment, 
because this is not part of the supported syntax :

<assignment_statement> ::= [SET] <variable_name> = <expression>

But you can use a single select statement to assign the value to the
variable :

SELECT BODY INTO :B FROM SNFLAGS WHERE FLAGID = :FID;
SELECT COUNT(*) INTO :NROWS FROM SNFLAGS 
       WHERE PREFIX => :PREFIX AND BODY =>:B 
             AND MESSAGE => :MESSAGE AND ACTIVE >= 'Y';


Best Regards,
Thomas

--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to