mindhunter
Benutzer
- Beiträge
- 22
Hallo,
in einer Tabelle ist ein Datenfeld auf 40 Zeichen (VARCHAR2(40 BYTE)) begrenzt. Der String enthält Sonderzeichen und kann länger als 40 Zeichen sein. Damit der Insert erfolgt, muss der String abgeschnitten werden, egal wie lang der String ist. Bleibt ein Sonderzeichen am Ende stehen, kann der Datensatz aufgrund eines Fehlers nicht in die Tabelle eingefügt werden. In dem Beispiel bleibt zum Stringende ein ‚#‘ stehen. Diese Problem würde ich gerne mit einem Trigger lösen, der vor dem Insert den String auf 40 Zeichen kürzt und dann in das Feld schreibt.
String: BAP_DER_VS_0402_100n_+-10%_16V_123_''####''_457
create or replace
TRIGGER TTABLE.TR_TABLE_CUT_NAME
BEFORE INSERT OR UPDATE
ON TTABLE REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
PT_NAME TTABLE.PT_NAME%type;
BEGIN
if
inserting or updating
then
:new.PT_NAME := Substr(PT_NAME,1,40)';
end if;
END TR_TABLE_CUT_PT_NAME;
in einer Tabelle ist ein Datenfeld auf 40 Zeichen (VARCHAR2(40 BYTE)) begrenzt. Der String enthält Sonderzeichen und kann länger als 40 Zeichen sein. Damit der Insert erfolgt, muss der String abgeschnitten werden, egal wie lang der String ist. Bleibt ein Sonderzeichen am Ende stehen, kann der Datensatz aufgrund eines Fehlers nicht in die Tabelle eingefügt werden. In dem Beispiel bleibt zum Stringende ein ‚#‘ stehen. Diese Problem würde ich gerne mit einem Trigger lösen, der vor dem Insert den String auf 40 Zeichen kürzt und dann in das Feld schreibt.
String: BAP_DER_VS_0402_100n_+-10%_16V_123_''####''_457
create or replace
TRIGGER TTABLE.TR_TABLE_CUT_NAME
BEFORE INSERT OR UPDATE
ON TTABLE REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
PT_NAME TTABLE.PT_NAME%type;
BEGIN
if
inserting or updating
then
:new.PT_NAME := Substr(PT_NAME,1,40)';
end if;
END TR_TABLE_CUT_PT_NAME;