CREATE OR REPLACE FUNCTION f4(isbn IN VARCHAR2, bar_code IN VARCHAR2) RETURN VARCHAR2 AS
ins_isbn VARCHAR2(255) := isbn;
ins_barcode VARCHAR2(255) := bar_code;
counter_isbn NUMBER := 0;
check_corr_val VARCHAR2(255) := 'Ihre Daten wurden nicht korrekt eingetragen!';
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(buch.isbn) from buch WHERE buch.isbn = ' || ins_isbn INTO counter_isbn;
IF ins_barcode IS NOT NULL AND counter_isbn > 0 THEN
EXECUTE IMMEDIATE 'INSERT INTO buch_kopien(BARCODE_ID, ISBN) values(' || ins_barcode || ', ' || ins_isbn || ')';
check_corr_val := 'Ihre Daten wurden korrekt eingetragen!';
END IF;
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
RAISE_APPLICATION_ERROR(-20001, 'Der Barcode ist schon vergeben! [' || SQLERRM || ']');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20001, 'Ein Fehler ist Aufgetreten! [' || SQLERRM || ']' || ins_isbn || ',' || counter_isbn || ',' || ins_barcode);
RETURN check_corr_val;
END;
DECLARE
checker VARCHAR2(255) := '';
isbn VARCHAR2(255) := '1-56592-335-9';
bar_code VARCHAR2(255) := '100000212';
BEGIN
checker := f4(isbn, bar_code);
DBMS_OUTPUT.put_line(checker);
END;
Comments
0 B
|👍
/👎
0 B
|👍
/👎