2017-09-01 4 views
0

J'ai une fonction qui supprime le dernier caractère d'un varchar2, mais j'avais besoin de le convertir en tableau de chars en premier. Maintenant, je ne peux pas trouver quelque chose pour le convertir en varchar2.PLSQL - Convertir Char Array à Varchar2

Ma fonction:

DECLARE 
    TYPE CHAR_ARRAY IS TABLE OF CHAR(1) INDEX BY PLS_INTEGER; 
    NAME VARCHAR2(100) := '&vname'; 
    NAME_CHAR CHAR_ARRAY; 
BEGIN 
    FOR X IN 1..LENGTH(NAME) LOOP 
     IF((X = LENGTH(NAME))) THEN 
      NAME_CHAR(X) := ''; 
     ELSE 
      NAME_CHAR(X) := SUBSTR(NAME, X , 1); 
     END IF; 
    END LOOP; 
    -- Now I need to convert it back to varchar2 
END; 
+0

Pourquoi le tableau 'char'? Les chaînes ordinaires sont généralement plus faciles à travailler. De plus, PL/SQL n'a pas d'exigence de syntaxe à double parenthèse après 'if', parce qu'il a' then'. Vous pouvez simplement écrire 'if x = length (name) then'. Bien que vous pourriez probablement travailler sur 'longueur (nom)' une fois au début. –

Répondre

1

Que diriez-vous:

name := ''; 
for x in 1..name_char.count loop 
    name := name || name_char(x); 
end loop; 

Bien pourquoi vous feriez tout cela me échappe! Si je voulais enlever le dernier caractère d'une chaîne je ferais ceci:

name := substr (name, 1, length(name)-1);