La conversion de Long à Varchar2
Je suis en train de les insérer dans varchar2 colonne à partir d'une longue colonne. voici l'exemple ci-dessous, TEXT.TEXT_COL = VARCHAR2(4000)
et NOTE.TEXT_NOTE = LONG
.
INSERT INTO TEXT(ROW_ID, TEXT_COL)
SELECT 1, TEXT_NOTE FROM NOTE;
Quand je lance le sql ci-dessus j'obtiens l'erreur
SQL Error: ORA-00997: utilisation illégale de type de données LONG
J'ai utilisé TO_LOB()
trop, mais toujours la même erreur.
Est-il une fonction qui tout simplement n'importe où long
et le mettre dans varchar2
. Laissez-moi savoir vos pensées.
- vous ne pouvez pas le faire en une seule instruction en utilisant uniquement intégré dans les procédures, reportez-vous à ce thread
- Vous auriez besoin d'utiliser PL/SQL ou d'un intermédiaire de table avec une colonne de CLOB. Vous voudrez peut-être un CLOB de toute façon, si l'une des valeurs de la colonne sont plus de 4000 octets, bien sûr; ou êtes-vous heureux de tronquer ces?
- J'ai utiliser ce code sql dans la informatica niveau de la session. J'ai essayé à la cartographie de niveau de informatica construit dans les types de données, mais sa ne fonctionne pas non plus.
- est-il un autre moyen que je peux gérer cela ?
- Avez-CAST(TEXT_NOTE QUE VARCHAR) lève une erreur à vous?
Vous devez vous connecter pour publier un commentaire.
La conversion de
long
àvarchar2
immédiatement à l'aide d'une seule instruction n'est pas possible, commelong
a certaines restrictions.Vous pouvez soit Créer une table temporaire ou de l'utilisation de code PL/SQL pour résoudre votre problème:
Table Temporaire:
CREATE TABLE TABLE2 AS SELECT TO_LOB(COLUMN1) COLUMN FROM TABLE1;
De Code PL/SQL:
Il ressemble à Oracle en interne convertit LONG à autre chose (probablement CLOB) lorsque vous sélectionnez LONGTEMPS dans la boucle FOR. Je n'ai pas trouvé toutes les explications dans la documentation d'Oracle, mais cela fonctionne
Ceci est un exemple de comment faire pour copier tous les points de vue à partir d'un autre schéma à votre schéma de
Pour une raison quelconque, il ne fonctionne que pour la boucle FOR et ne fonctionne pas si vous utilisez, ou sélectionnez à partir d'une autre requête
Les deux insertions poser la même erreur