web-dev-qa-db-fra.com

Erreur: ORA-01704: littéral de chaîne trop long

Alors que j'essaie de définir la valeur de plus de 4000 caractères sur un champ qui a le type de données CLOB, cela me donne cette erreur:

ORA-01704: chaîne littérale trop longue.

Toute suggestion, quel type de données serait applicable pour moi si je dois définir la valeur d'un nombre illimité de caractères, bien que dans mon cas, il se trouve qu'il s'agit d'environ 15000 caractères.

Remarque: la longue chaîne que j'essaie de stocker est codée en ANSI.

28
hsuk

Qu'utilisez-vous lorsque vous utilisez CLOB?

Dans tous les cas, vous pouvez le faire avec PL/SQL

DECLARE
  str varchar2(32767);
BEGIN
  str := 'Very-very-...-very-very-very-very-very-very long string value';
  update t1 set col1 = str;
END;
/

Lien de preuve sur SQLFiddle

44
knagaev

Essayez de diviser les personnages en plusieurs morceaux comme la requête ci-dessous et essayez:

Insert into table (clob_column) values ( to_clob( 'chunk 1' ) || to_clob( 'chunk 2' ) );

Ça a marché pour moi.

24
Ameer Tamboli

Le fractionnement fonctionne jusqu'à 4000 caractères selon les caractères que vous insérez. Si vous insérez des caractères spéciaux, cela peut échouer. Le seul moyen sûr est de déclarer une variable.

2
kazzikazzi