IREGEXP_LIKE nicht variables Muster zu akzeptieren
> create table employee(employeeid number(10), name varchar2(100),deptno
>
> number(10));
gibt es 1000 Zeilen in dieser Tabelle eine Tabelle. wenn ich versuche, eine Prozedur zu erstellen, die einen Wert sucht und eine temporäre Tabelle zur Laufzeit erstellt & fügt alle Ergebnisse in diese Tabelle ein. In der Prozedur: tableName ist der Name der temporären Tabelle, die von der Anwendung übergeben wird. Suchfeld ist der Spaltenname, nach dem gesucht wird. Searchvalue wird das Muster sein.
exec exec quick_search ('temp1','name','barbara') ;
gibt es kein Objekt, das mit dem Namen temp1 und barbara existiert in meinen Mitarbeitern Tabelle exixt:
create or replace PROCEDURE quick_search (tableName IN varchar2,searchfield IN VARCHAR2,searchvalue IN varchar2) IS v_tableName varchar2(100); begin select count(tname) into v_tableName from tab where lower(tname) = tableName; if v_tableName = 1 then EXECUTE IMMEDIATE 'DROP TABLE '||tableName||''; case searchfield when 'name' then execute immediate 'create table '||create_table||' as Select Distinct employeeid FROM employee where regexp_like(NAME ,'||searchvalue||',''i'')'; when 'deptno' then execute immediate 'create table '||create_table||' as Select Distinct employeeid FROM employee where regexp_like(deptno ,'||searchvalue||',''i'')'; end case; end if; if v_tableName =0 then case searchfield when 'name' then execute immediate 'create table '||create_table||' as Select Distinct employeeid FROM employee where regexp_like(NAME ,'||searchvalue||',''i'')'; when 'deptno' then execute immediate 'create table '||create_table||' as Select Distinct employeeid FROM employee where regexp_like(deptno ,'||searchvalue||',''i'')'; end case; end if; end;
wenn ich dies ausgeführt wird.
ich Fehler Fehlermeldung immer bin - ORA-00904: "BARBARA": ungültige Kennung ORA-06512: bei "SCOTT.QUICK_SEARCH", Zeile 53 ORA-06512: in Zeile 1 00904. 00000 - "% s: Ungültige Kennung" * Ursache: * Aktion: