Ich möchte einen Wert mit% TYPE-Attribut in meiner SQL-Anweisung zu werfen. Mit dem% TYPE-Attribut können Sie den Datentyp eines Felds, Datensatzes, einer geschachtelten Tabelle, einer Datenbankspalte oder einer Variablen in Ihren eigenen Deklarationen verwenden, anstatt die Typnamen fest zu codieren.Oracle Cast mit% TYPE-Attribut
Dies funktioniert:
insert into t1 select cast(v as varchar2(1)) from t2;
Aber würde ich
insert into t1 select cast(v as t1.v%TYPE) from t2;
Error starting at line 16 in command:
insert into t1 select cast(v as t1.v%TYPE) from t2
Error at Command Line:16 Column:37
Error report:
SQL Error: ORA-00911: Ongeldig teken.
00911. 00000 - "invalid character"
*Cause: identifiers may not start with any ASCII character other than
letters and numbers. $#_ are also allowed after the first
character. Identifiers enclosed by doublequotes may contain
any character other than a doublequote. Alternative quotes
(q'#...#') cannot use spaces, tabs, or carriage returns as
delimiters. For all other contexts, consult the SQL Language
Reference Manual.
*Action:
Kann diese (oder so ähnlich) getan werden, um
gefallen hat?EDIT: Was ich versuche zu erreichen ist: Wenn t2.v zu groß ist, möchte ich es abschneiden. Ich versuche zu vermeiden, substr mit einer fest codierten Feldlänge zu verwenden. Daher wird (0 als t1.v% TYPE) anstelle von substr (v, 1,1)
'+ 1', Herzlichen Glückwunsch zu erreichen' 10k' :) –
@PeterLang - danke * 8-) Rate mal, ich gehe besser und lese dann über die Moderator Tools ... –
@Alex Das ist genau das, was ich bin versuchen zu erreichen. Wenn t2.v zu groß ist, möchte ich es abschneiden. Ich versuche zu vermeiden, substr mit einer fest codierten Feldlänge zu verwenden. So Cast (v wie t1.v% TYPE) anstelle von substr (v, 1,1) –