Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Gespeicherte Oracle-Prozedurabfrage funktioniert nicht mit dem Cursor

Sie verwenden unnötige Anführungszeichen:

SQL> declare
  2      mat_id        varchar2(100) := 'X';
  3      searchString  varchar2(100) := ''''||mat_id||'%''';
  4      searchString2 varchar2(100) := ''||mat_id||'%';
  5      num number;
  6  begin
  7      select count(1)
  8      into num
  9      from dual
 10      where 'X' like searchString;
 11      --
 12      dbms_output.put_line('1. num= ' || num);
 13      --
 14      select count(1)
 15      into num
 16      from dual
 17      where 'X' like searchString2;
 18      --
 19      dbms_output.put_line('2. num= ' || num);
 20  end;
 21  /
1. num= 0
2. num= 1

PL/SQL procedure successfully completed.

SQL>

Ihre doppelten Anführungszeichen könnten nützlich sein, wenn Sie dynamisches SQL verwenden würden, aber in Ihrer statischen Abfrage bedeutet dies, dass Sie nach einem Muster suchen, das Anführungszeichen als Teil der zu suchenden Zeichenfolge enthält.