3 Stimmen

Wie überprüft man einen gültigen Oracle-Tabellennamen mit SQL/PLSQL?

Ich muss überprüfen, ob ein String einen gültigen Oracle Tabellennamen mit sql/plsql enthält. Die Kriterien, die ich für einen Oracle Tabellennamen gefunden habe, sind diese:

  1. Der Tabellenname muss mit einem Buchstaben beginnen.
  2. Der Tabellenname darf nicht länger als 30 Zeichen sein.
  3. Der Tabellenname muss aus alphanumerischen Zeichen oder den folgenden Sonderzeichen bestehen: $, _, und #.
  4. Der Tabellenname darf kein reserviertes Wort sein.

Kriterien 1,2,3 scheinen nicht so schwer zu sein. Aber was ist mit Punkt 4? Was sind meine Optionen, ohne tatsächlich zu versuchen, eine Tabelle mit dem angegebenen Namen zu erstellen und dann zu sehen, ob es erfolgreich oder fehlgeschlagen ist.

7voto

Jim Hudson Punkte 7729

Oracle verfügt über ein integriertes Tool, das nützlich ist, um zu überprüfen, ob ein SQL-Name gültig ist. Das ist besonders nützlich beim Erstellen dynamischer Abfragen, bei denen SQL-Injection verhindert werden muss.

Schauen Sie sich das dbms_assert.simple_sql_name integrierte Tool an und lesen Sie das Oracle-Whitepaper unter So schreiben Sie SQL-Injection-sicheres PL/SQL für weitere Details.

Auch v$reserved_words ist nützlich, wie andere bereits bemerkt haben.

5voto

Ian Carpenter Punkte 8086

Für SQL-reservierte Wörter können Sie v$reserved_words überprüfen. Hier ist der Link von der Dokumentation

0voto

cagcowboy Punkte 28493

Ich habe eine SQL_RESERVED_WORDS-Tabelle, gegen die ich prüfe.

BEARBEITEN:

(Ich habe gelogen... es war nur ein SYNONYM für die Tabelle im Beitrag von carpenteri)

0voto

Gren Punkte 563

Es ist eine ziemlich große Liste zu überprüfen. Kannst du einfach einen Standardpräfix zu den Tabellen hinzufügen und diese Probleme ganz vermeiden? Benutzer_xxx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X