sql >> Databasteknik >  >> RDS >> Oracle

Oracle lagrad procedur fråga som att inte arbeta med markören

Du använder onödiga citattecken:

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>

Din dubbla citattecken kan vara användbar om du använder en dynamisk SQL, men i din statiska fråga betyder det att du letar efter ett mönster som innehåller citattecken som en del av strängen att leta efter.



  1. Hur man anropar proceduren utan parameter som tabelltyp från en Java-klass

  2. Hur kan jag bli av med dessa kommentarer i en MySQL-dump?

  3. SQL - Konverteringen av en varchar-datatyp till en datetime-datatyp resulterade i ett värde utanför intervallet

  4. Vilken är den bästa metoden att använda / lagra krypteringsnycklar i MySQL