Auf Thema antworten

Da waren ein paar Tippfehler drin.


[code]

create or replace function f_checktables(slotName in varchar2)

  return PLS_INTEGER

as

  l_count integer;

  l_first_column  varchar(128);

  l_column        varchar(128);  --<< hat gefehlt

  l_column_name   varchar(128);

  l_sequence_name varchar(128);

begin

  -- teste ob es wenigstens eine Spalte mit WID endet

  SELECT count(*)

     INTO l_count

  FROM USER_TAB_COLS

  WHERE TABLE_NAME = upper(slotname)

    AND column_name LIKE '%_WID';


  -- Keine Spalte mit _WID am Ende vorhanden - hole den Namen der ersten Spalte der Tabelle.

  IF l_count = 0 THEN

    SELECT column_name

       INTO l_column

    FROM user_tab_cols --<< hat gefehlt

    WHERE TABLE_NAME = upper(slotname)

    ORDER BY column_id  --<< nach der Reihenfolge sortieren

    FETCH FIRST 1 ROWS ONLY; --<< nur eine Zeile zurückgeben

  

    -- neuen Namen erzeugen

    l_column_name := l_column ||'_WID';

 

    -- und Spalte hinzufügen.

    EXECUTE IMMEDIATE 'ALTER TABLE '||slotname||' ADD COLUMN '||l_column||' VARCHAR2(100)';

  END IF;


  -- keine Ahnung ob ich das richtig verstanden habe.

  l_sequence_name := 'BI_ADMIN_'||l_column_name; --<< hier hat ein ' gefehlt

  SELECT count(*)

    INTO l_count

  FROM user_sequences

  WHERE sequence_name = l_sequence_name;


  IF l_count = 0 THEN

    EXECUTE IMMEDIATE 'CREATE SEQUENCE '||l_sequence_name;

  END IF;

  RETURN 1;

end;

/

[/code]


Zurück
Oben