2008-10-09 9 views
12

Lorsque vous créez une procédure (ou une fonction) dans Oracle PL/SQL, vous ne pouvez pas spécifier la longueur maximale des arguments varchar2, mais uniquement le type de données. Par exempleQuelle est la taille limite d'un argument de sous-programme PL/SQL varchar2 dans Oracle?

create or replace procedure testproc(arg1 in varchar2) is 
begin 
    null; 
end; 

Connaissez-vous la longueur maximale d'une chaîne que vous pouvez passer comme l'argument arg1 à cette procédure dans Oracle?

Répondre

8

J'ai essayé avec TestProc (lpad ('', 32767, '')) et il fonctionne.

Avec 32768 octets, il ne parvient, il est donc 32K - 1 octets

2

Dans PL/SQL la taille maximale de VARCHAR2 type de données est 32767 octets depuis 10gR2 (et probablement plus tôt mais je viens de vérifier la documentation jusqu'à cette version).

Les références documentaires:

+0

Juste curieux, savez-vous pourquoi ne pas 32Kb au lieu de 32Kb -1? – Roland

+0

@Roland Non je ne sais pas. Peut-être que c'est une [chaîne à zéro terminal] (https://en.wikipedia.org/wiki/Null-terminated_string), peut-être quelque chose d'autre. Oh et s'il te plait ne demande pas pourquoi c'est 2^15-1 et pas 2^16-1. Seul Oracle le sait. :) – user272735

+1

@Roland, c'est parce que la variable entière signée par défaut de 2 octets va de -32768 à 32767. –

Questions connexes