SQL SELECT INTO ....
                                                                        
Vous lancez une requête SQL dans une procédure ou dans un SQL embarqué et vous obtenez ce message :
 

ID message . . . . . . :   SQL0811       Gravité  . . . . . . . :   30  
Type de message  . . . :   Diagnostic                                   
                                                                        
Message . . . . :   Résultat de SELECT dépasse une ligne.       

C'est que vous avez fait un select into et que plusieurs enregistrements existent.

3 cas possibles :

A) C'est une erreur, vous devez changer votre critère de tri

B) Vous avez besoin de tous les enregistrements, vous pouvez passer par un curseur

C) Le premier vous suffirait, il est possible de sélectionner un seul enreg en utilisant la clause

 FETCH FIRST ROW ONLY 

Exemple :

Récupération du libellé article d'un fichier de travail dans une procédure 

CREATE PROCEDURE reclibart (IN Pident DECIMAL(5, 0)) 
 LANGUAGE SQL                                               
 SPECIFIC reclibart                                 
 NOT DETERMINISTIC                                          
 MODIFIES SQL DATA                                          
 CALLED ON NULL INPUT                                       
  SET OPTION                                                
    ALWBLK =    *ALLREAD ,                                  
    ALWCPYDTA = *OPTIMIZE ,                                 
    COMMIT = *NONE ,                                        
    CLOSQLCSR = *ENDMOD ,                    
    DECRESULT = (31, 31, 00) ,               
    DFTRDBCOL = *NONE ,                      
    DYNDFTCOL = *NO ,                        
    DYNUSRPRF = *USER ,                      
    SRTSEQ = *HEX                            
  BEGIN                                      
  DECLARE w_LIBEL CHAR (18) ;                
  DECLARE NON_TROUVE INT DEFAULT 0;          
  DECLARE CONTINUE HANDLER FOR NOT FOUND     
   SET NON_TROUVE = 1                      ;    
  SELECT   PAYS  INTO w_LIBEL                   
      FROM W_ART01                               
      WHERE pident = Aident                      
      FETCH FIRST ROW ONLY                 ;    
  IF NON_TROUVE = 0 THEN                        
    .... traitement                   ;    
  END IF                                   ;    
  END                                      ;    
                  

Si vous avez deux fois l'article dans votre fichier, il prendra le premier.