Le variabili di tipo RAW
sono immutabili nel codice PL/SQL? Voglio dire, posso alterare il byte specifico della variabile di tipo RAW
al posto giusto senza copiare la memoria?Le variabili di tipo RAW sono immutabili nel codice PL/SQL?
Naturalmente abbiamo UTL_RAW
pacchetto con alcune routine appropriati per alterare spec byte ma sembra che tutti loro copia variabile di memoria esempio:
UTL_RAW.BIT_AND
UTL_RAW.BIT_OR
UTL_RAW.OVERLAY
Anche questa domanda è strettamente legata alla stringa efficace problema di concatenazione Ad esempio, anche le stringhe Java sono immutabili e abbiamo StringBuilder per questa attività. Non ho trovato informazioni chiare nei documenti Oracle su questo. Dopo un po 'di ricerca su google [1], la risposta corrisponde a come: Sì. Le variabili di tipo RAW sono immutabili nel codice PL/SQL così come le stringhe. È proprio vero? Sarebbe meglio avere più spiegazioni e storia di questa domanda.
Riferimenti:
Non sono sicuro di aver compreso lo scopo di questa domanda. È certamente possibile aggiornare le variabili RAW, proprio come qualsiasi altra variabile. La semantica è la stessa. Anche l'eccezione riguardante i parametri NOCOPY si applica allo stesso modo, ma ciò non è applicabile a nessuna delle funzioni in UTL_RAW, per quanto posso vedere. Perché è necessario modificare un bit specifico di una variabile RAW senza copiare la memoria? –
Lo scopo in generale è quello di eliminare il comportamento interno della macchina PL \ SQL. C'è anche un problema pratico di efficienza nel lavorare con le stringhe \ raw's. Otterremo un traffico di memoria elevato se faremo enormi quantità di operazioni su di loro. Ad esempio la concatinazione. Perché questo mi confonde? A causa di Java e di ciò che esiste in StringBuilder. Sembra che abbiamo problemi e soluzioni in Java e in PL \ SQL abbiamo solo un problema. –
Non sei ancora sicuro di quale sia il tuo problema. Se le prestazioni di puro PL/SQL sono un problema, allora usare NOCOPY e/o forse PL/SQL compilato in modo nativo può essere un modo per esplorare. Tuttavia, le variabili di 'RAW' non sono un problema in se stesse; presumibilmente li stai usando per risolvere un problema: qual è il problema che stai cercando di risolvere? –