2017-09-12 6 views
-1

je la HANA procédure suivante:HANA fonction SQL pour diviser une chaîne délimitée par des virgules dans les sous-chaînes

CREATE PROCEDURE SP_LIT() 
AS 

BEGIN 
DECLARE count INT; 
DECLARE pos INT; 
DECLARE value NVARCHAR(100); 

value := 'R,A'; 


IF LENGTH(:value) > 0 THEN 

    value := :value + ','; 
    pos := LOCATE(:value,',',1); 
END IF; 
    WHILE :pos > 0 DO 
    BEGIN 
     INSERT INTO [O/P table] VALUES (LEFT(:value,:pos-1)); 
     value := RIGHT(:value, LENGTH (:value)-:pos); 
     pos := LOCATE(:value,',',1); 

    END; 
    END WHILE; 
END; 

Tout semble bien, mais sur l'exécution de l'erreur suivante est générée:

Error: invalid number exception: invalid number: not a valid number string 'R,A' 

Toute idée où est-ce que je vais mal?

+0

Je ne connais pas grand-chose à HANA, mais il serait utile de savoir sur quelle ligne il se trouve. Il se peut que la colonne de la table cible soit un type de données numérique et que vous essayiez d'y insérer une chaîne. Les fonctions que vous utilisez ne semblent pas nécessiter de numéros. Normalement, dans une instruction INSERT, vous devez spécifier les colonnes à insérer, mais encore une fois, je ne connais pas grand-chose à propos de HANA –

+0

Voir les questions précédentes sur SO, par ex. https://stackoverflow.com/questions/44110999/how-to-split-multiple-values-from-a-row-into-separate-rows –

Répondre

0

J'ai trouvé la solution. La concaténation du signe '+' doit être remplacée par '||' opérateur de tuyau.