eval

Mit dem Befehl eval können Sie den Wert eines Ausdrucks berechnen und in einem neuen Feld anzeigen.

Hinweis

  • Während der Befehl stats Statistiken auf Basis vorhandener Felder berechnet, erstellt der Befehl eval neue Felder mit vorhandenen Feldern und beliebigen Ausdrücken.

  • Zeichenfolgenverarbeitungsfunktionen wie indexof und substr sind ressourcenintensiv. Daher wird die Ausführung des Befehls eval mit diesen Funktionen für eine große Anzahl von Logdatensätzen oder für große Feldwerte nicht empfohlen. Extrahieren Sie diese Werte stattdessen mit den erweiterten Felddefinitionen (EFD) oder Labels in Ihrer Logquelle. Siehe Erweiterte Felder in Quellen verwenden und Labels in Quellen verwenden.

  • Stellen Sie sicher, dass der im Befehl eval verwendete Feldname die Zeichen [ und ] nicht enthält.

Syntax

Mit dem Befehl verfügbare Operatoren und Funktionen

*|eval <new_field_name>=<expression>

In der folgenden Tabelle sind die mit dem Befehl eval verfügbaren Operatoren aufgelistet.

Kategorie Beispiel

Arithmetische Operatoren

+, -, *, /, %

Vergleichsoperatoren

=, !=, <, >, <=, >=

Logische Operatoren

and, or, not

Bedingungsoperatoren

if(<expression>,<expression>,<expression>)

Mehrere Vergleichsoperatoren

in, not in

In der folgenden Tabelle sind die mit dem Befehl eval verfügbaren Funktionen aufgelistet.

Kategorie Beispiel

Zeichenfolgenfunktionen

  • capitalize(String)

    Schreiben Sie das erste Zeichen der Zeichenfolge groß.

  • concat(String, String)

  • contains(String, String)

  • decode64(String)

    Hinweis: Wenn der Zeichenfolgenwert ein Feld ist, muss die Groß-/Kleinschreibung beachtet werden.

  • encode64(String)

  • indexof (String, String [,int])

    Siehe indexof-Funktionsdetails.

  • lastindexof(String, String, int)

    Siehe lastindexof-Funktionsdetails.

  • length(String)

  • literal(String)

  • lower(String)

  • ltrim(String, Character)

  • replace(String, String, String, String, String, ..)

    Siehe Funktionsdetails ersetzen.

  • reverse(String)

  • rtrim(String, Character)

  • substr(String, int [, int])

    Siehe Details zu Unterwarengruppenfunktionen.

  • todate(String [, format])

  • toduration(String)

  • tonumber(String)

  • trim(String)

  • trim(String, Character)

  • upper(String)

  • urlDecode(String)

  • urlEncode(String)

  • url(String [, Name [, Parameter]])

    Siehe URL-Funktionsdetails und Von Oracle definierte URL-Kurzschlüsse.

Numerische Funktionen

Datumsfunktionen

  • dateadd(date, property, amount)

  • dateset(date, property, value [, property, value])

  • formatdate(date [,format])

  • now()

Ähnlich wie der Befehl where können Sie die Zeit in der Abfrage mit einer menschenlesbaren Zeichenfolge bearbeiten. Beispiel: So erstellen Sie ein neues Feld mit dem Namen 10mins Später, das dem Wert im Feld Zeit 10 Minuten voraus ist:

* | eval '10mins Later' = Time + 10mins

Siehe Benutzerfreundliche Zeitzeichenfolgen in Vergleichen.

Bedingungsfunktionen

  • cidrmatch(String, String)

  • if(<expression>, <expression>, <expression>)

Hashfunktionen

  • md5(<value to hash>)

  • sha1(<value to hash>)

  • sha256(<value to hash>)

  • sha512(<value to hash>)

Hinweis: Die Funktionen md5 und sha werden derzeit für die Kleinbuchstaben-Feldwerte verwendet.

Hinweis

  • Für die concat()-Funktion können Sie numerische Datentypen wie Integer, Float oder Long eingeben. Die numerischen Felder werden automatisch in die entsprechenden Zeichenfolgenwerte konvertiert.

  • Mit || können Sie n Eingaben verketten. Auch hier können Sie numerische Datentypen eingeben, die automatisch in die entsprechenden Zeichenfolgenwerte konvertiert werden.

Parameter

In der folgenden Tabelle sind die in diesem Befehl verwendeten Parameter sowie deren Beschreibungen aufgeführt.

Parameter Beschreibung

new_field_name

Geben Sie den Namen des Feldes an, in dem der berechnete Wert des Ausdrucks angezeigt werden soll.

expression

Geben Sie den Ausdruck an, für den der Wert berechnet werden soll.

Beispiele für den Befehl eval:

*|eval newField = 'foo'
*|eval newField = 123
*|eval newField = upper(Target)
*|eval newField = length('hello world')
*|eval s =capitalize(severity)
*|eval newField = concat(host, concat (':', port))
*|eval n = contains(uri, '.com')
*|eval s = decode64(value)
*|eval s = encode64(uri)
*|eval s = reverse(Command)
*|eval newField = host || ':'|| port
*|eval newField = round(123.4)
*|eval newField = floor(4096/1024)+Length
*|eval newField = if (max(Length)(Target), length(Severity)) <= 20, 'OK', 'ERROR')
*|eval newField = urlDecode('http%3A%2F%2Fexample.com%3A893%2Fsolr%2FCORE_0_0%2Fquery')
*|eval s = urlEncode(uri)
*|eval newField = 'Host Name (Destination)' in (host1, host2)

Im folgenden Beispiel werden die IP-Adressen im Feld srvrhostip mit einem Subnetzbereich verglichen.

*|eval newField = if (cidrmatch(srvrhostip, '192.0.2.254/25') = 1, 'local', 'not local')

Im folgenden Beispiel wird die Zeichenfolge "Target" zurückgegeben.

*|eval newField = literal(Target)

Im folgenden Beispiel werden die Leerzeichen und Tabulatorzeichen von beiden Enden entfernt.

*|eval newField = trim(Label)

Im folgenden Beispiel wird das übereinstimmende Zeichen von beiden Enden entfernt.

*|eval newField = trim('User Name',h)

Im folgenden Beispiel wird das übereinstimmende Zeichen vom linken Ende entfernt.

*|eval newField = ltrim('Error ID',0)

Im folgenden Beispiel wird das übereinstimmende Zeichen vom rechten Ende entfernt.

*|eval newField = rtrim('OS Process ID',2)

Im folgenden Beispiel wird das Feld date auf Start Date gesetzt und das Format des Datums als MM/dd/yyyy HH:mm definiert.

*|eval date = toDate('Start Date', 'MM/dd/yyyy HH:mm')

Die Funktion toDate kann auch verwendet werden, um Epochen wie folgt zu behandeln:

... | where 'Start Time' > toDate(1405544998000)

Im folgenden Beispiel wird der Wert des Feldes duration auf 1.30 gesetzt.

*|eval duration = toduration("1.30")

Im folgenden Beispiel wird der Wert des Feldes duration auf einen numerischen Wert gesetzt, der die Differenz zwischen End Time und Start Time darstellt.

*|eval duration = formatDuration('End Time' - 'Start Time')

Die folgenden Beispiele veranschaulichen die Verwendung von Datumsfunktionen.

*| eval lastHour = dateAdd(now(), hour, -1)
*| eval midnight = dateSet(now(), hour, 0, minute, 0, sec, 0, msec, 0)
*| eval timeOnly = formatDate(now(), 'HH:mm:ss')
*| eval now = now()

Sie können die Hashfunktionen MD5, SHA1, SHA256 und SHA512 mit dem eval-Befehl verwenden, um Logdaten zu filtern. Im folgenden Beispiel wird der Wert des Feldes user mit dem Wert sha1("jane") festgelegt.

*|eval user = sha1("jane")

Im folgenden Beispiel wird ein Hexadezimalwert in eine Dezimalzahl konvertiert, und n ergibt 255:

* | eval n = toNumber('0xFF')

Im folgenden Beispiel wird eine Oktalzahl in eine Dezimalzahl konvertiert, und n ergibt 10:

* | eval n = toNumber('012')

Beispiele für die Funktion unit

Einige einfache Beispiele:

* | eval newField = unit('Content Size', KB)
* | eval 'File Size (bytes)' = unit('File Size', 'byte')
* | eval 'File Size (KB)' = unit('File Size'/1024, 'kb')
* | eval 'File Size (MB)' = unit('File Size'/(1024*1024), 'mb')
* | eval 'Time Taken (Sec)' = unit(Time/1000, 'SEC')

Beispiele für gemeinsame Einheiten wie Byte, Währung und Dauer:

* | eval Vol = unit('Content Size Out', byte) | stats sum(Vol) as 'Total Volume'
* | eval Sales = unit('Sales Amount', currency_usd) | stats sum('Sales') as 'Total Sales'
* | eval 'Disk Read Time' = unit('Disk Read Time (millis)', ms) | stats avg('Disk Read Time') as 'Avg Disk Read Time'

Führen Sie die oben genannten drei Abfragen zur Kachelvisualisierung aus, und aktivieren Sie die Option Formatnummer, um die besten Ergebnisse zu erzielen.

Ein Feld mit dem Typ unit für Größe oder Dauer wird verwendet, um die Werte in der Visualisierung "Link Analyze", "addfields" und "Link Table" zu formatieren:

'Log Source' = 'FMW WebLogic Server Access Logs'
| link span = 5minute Time, Server
| stats avg('Duration')     as 'Raw Avg. Duration'
        avg('Content Size') as 'Raw Avg. Transfer Size'
| eval 'Average Duration'      = unit('Raw Avg. Duration', ms)
| eval 'Average Transfer Size' = unit('Raw Avg. Transfer Size', byte)
| classify 'Start Time', 'Average Duration', 
          'Average Transfer Size' as 'Response Time vs. Download Sizes'

Markieren Sie ein Feld mit US-Dollar, Tausenden US-Dollar, Millionen US-Dollar oder Milliarden US-Dollar:

| eval 'Amount in USD' = unit('Sales Price', currency_usd)
| eval 'Amount in Thousands (USD)' = usd('Quarterly Sales', currency_usd_thousand)
| eval 'Amount in Millions (USD)' = usd('Annual Profit', currency_usd_million)
| eval 'Amount in Billions (USD)' = usd('Annual Sales', currency_usd_billion)

Unterstützte Typen für die unit-Funktion

Einheitsnamen:

  • PERCENT | PCT
  • Datengröße:
    • BYTE
    • KILOBYTE | KB
    • MEGABYTE | MB
    • GIGABYTE | GB
    • TERABYTE | TB
    • PETABYTE | PB
    • EXABYTE | EB
  • Uhrzeit:
    • MILLISECOND | MS
    • S | SEC | SECS | SECOND | SECONDS
    • M | MIN | MINS | MINUTE | MINUTES
    • H | HR | HRS | HOUR | HOURS
    • D | DAY | DAYS
    • W | WEEK | WEEKS
    • MON | MONTH | MONTHS
    • Y | YR | YRS | YEAR | YEARS
    • MICRO | µs
  • Energie:
    • WATT
    • KILOWATT | kW
    • MEGAWATT | MW
    • GIGAWATT | GW
    • TERAWATT | TW
    • PETAWATT | PW
    • EXAWATT | EW
  • Temperatur:
    • KELVIN | K
    • CELSIUS | C
    • FAHRENHEIT | F
  • Häufigkeit:
    • HERTZ | Hz
    • KILOHERTZ | kHz
    • MEGAHERTZ | MHz
    • GIGAHERTZ | GHz
    • TERAHERTZ | THz
    • PETAHERTZ | PHz
    • EXAHERTZ | EHz

Unterstützte Währungstypen in der Funktion unit

Sie können diese Funktion nur unter dem Befehl link für den Befehl eval verwenden. Informationen zur Verwendung der Funktion in typischen Szenarios finden Sie in den Beispiellinks des Befehls eval.

Geben Sie die Währungseinheit im folgenden Format an:

eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>)
eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>_k)
eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>_m)
eval <New Field> = unit(<Field>, currency_<ISO-4217 Code>_b)

Die Suffixe _k, _m und _b werden verwendet, um die Währung in Tausenden, Millionen oder Milliarden anzugeben. Eine vollständige Liste der Währungscodes finden Sie unter ISO Standards.

NLS_Territory Currency
AFGHANISTAN Nachname
ALBANIEN ALL
ALGERIEN DZD
AMERIKA USD
ANGOLA AOA
ANTIGUA UND BARBUDA XCD
ARGENTINIEN ARS
ARMENIEN AMD
ARUBA AWG
AUSTRALIEN AUD
ÖSTERREICH EUR
ASERBAIDSCHAN AZN
BAHAMAS BSD
BAHRAIN BHD
BANGLADESCH BDT
BARBADOS BBD
BELARUS BYN
BELGIEN EUR
BELIZE BZD
BERMUDA BMD
BOLIVIEN BOB
BOSNIEN UND HERZEGOWINA BAM
BOTSUANA BWP
BRASILIEN BRL
BULGARIEN BGN
KAMBODSCHA KHR
KAMERUN XAF
KANADA CAD
CAYMANINSELN KYD
CHILE CLP
CHINA CNY
KOLUMBIEN COP
DEMOKRATISCHE REPUBLIK KONGO XAF
KONGO KINSHASA Kumulative Verteilungsfunktion
COSTA RICA CRC
KROATIEN HRK
CURAÇAO ANG
ZYPERN EUR
CZECH REPUBLIC CZK
DÄNEMARK DKK
DSCHIBUTI DJF
DOMINICA XCD
DOMINIKANISCHE REPUBLIK DOP
ECUADOR USD
EGYPTEN EGP
EL SALVADOR SVC
ESTLAND EUR
ÄTHIOPIEN ETB
FINLAND EUR
FRANKREICH EUR
FYR MAZEDONIEN MKD
GABON XAF
GEORGIA GEL
DEUTSCHLAND EUR
GHANA GHS
GREECE EUR
GRENADA XCD
GUATEMALA GTQ
GUYANA GYD
HAITI HTG
HONDURAS HNL
HONGKONG HKD
UNGARN HUF
ISLAND ISK
INDIEN INR
INDONESIEN IDR
IRAN IRR
IRAQ IQD
IRLAND EUR
ISRAEL ILS
ITALIEN EUR
ELFENBEINKÜSTE XOF
JAMAIKA JMD
JAPAN JPY
JORDAN JOD
KASACHSTAN KZT
KENYA KES
KOREA KRW
KUWAIT KWD
KYRGYZSTAN KGS
LAOS LAK
LETTLAND EUR
LIBANON LBP
LIBYA LYD
LIECHTENSTEIN CHF
LITAUEN EUR
LUXEMBURG EUR
MACAO MOP
MALAWI MWK
MALAYSIA MYR
MALEDIVEN MVR
MALTA EUR
MAURITIUS MRU
MAURITIUS Durchschn.
MEXIKO MXN
REPUBLIK MOLDAU MDL
MONTENEGRO EUR
MAROKKO MAD
MOZAMBIQUE MZN
MYANMAR MMK
NAMIBIA NAD
NEPAL NPR
NEUSEELAND NZD
NIKARAGUA NIO
NIGERIA NGN
NORWEGEN NOK
OMAN OMR
PAKISTAN PKR
PANAMA PAB
PARAGUAY PYG
PERU PEN
PHILIPPINEN PHP
POLAND PLN
PORTUGAL EUR
PUERTO RICO USD
QATAR QAR
RUMÄNIEN RON
RUSSLAND RUB
SAINT KITTS UND NEVIS XCD
SAINT LUCIA XCD
SAUDI-ARABIEN SAR
SENEGAL XOF
SERBIA Direktlieferungsbericht
SIERRA LEONE SLL
SINGAPUR SGD
SLOWAKEI EUR
SLOWENIEN EUR
SOMALIA SOS
SOUTH AFRICA ZAR
SÜDSUDAN Einzelverkaufspreis
SPANIEN EUR
SRI LANKA LKR
SUDAN SDG
SURINAME SRD
SWASILAND SZL
SCHWEDEN SEK
SCHWEIZ CHF
SYRIEN SYP
TAIWAN TWD
TANSANIA TZS
THAILAND THB
NIEDERLANDE EUR
TRINIDAD UND TOBAGO TTD
TUNESIEN TND
TÜRKEI TRY
TURKMENISTAN TMT
UGANDA UGX
UKRAINE UAH
USA AED
GROSSBRITANNIEN GBP
URUGUAY UJU
USBEKISTAN UZS
VENEZUELA VES
VIETNAM VND
JEMEN YER
SAMBIA ZMW
SIMBABWE ZWL

indexof Funktionsdetails

Die Syntax für die Funktion index0f:

indexof (String, String [,int])

indexof (Zeichenfolge, Zeichenfolge [,start_pos]): Die Indexanzahl beginnt mit 0, gibt den Übereinstimmungsindex ab start_pos zurück (falls angegeben) und gibt -1 zurück, wenn keine Übereinstimmung vorhanden ist.

Im folgenden Beispiel wird der Wert des Feldes newField mit der Position von .com in der uri-Zeichenfolge festgelegt.

*|eval newField = indexOf(uri, '.com')

Anwendungsfall: Extrahieren Sie den relevanten Teil des API-Pfads aus dem Feld "OCI-Auditlogs", "Pfad"

Das Feld Pfad enthält einen Wert wie /apis/coordination.k8s.io/v1/namespaces/default/leases/oracle.com-oci.

Sie können den Wert coordination.k8s aus dem obigen Feld extrahieren, indem Sie die folgenden Schritte ausführen:

  • Suchen Sie die Position des ersten und zweiten / mit der Funktion indexOf().
  • Suchen Sie die Position der dritten /.
  • Extrahieren Sie die Werte nach dem zweiten / bis zum dritten / mit der Funktion substr().
'Log Source' = 'OCI Audit Logs'
| eval firstPos = indexOf(Path, '/')
| eval secondPos = indexOf(Path, '/', firstPos + 1)
| eval API = substr(Path, secondPos + 1, indexOf(Path, '/', secondPos + 1))
| link Path, API

Beispielausgabe:


Anwendungsfall: Extrahieren Sie den relevanten Teil des API-Pfads aus dem Feld "OCI-Auditlogs", "Pfad"

lastindexof Funktionsdetails

Die Syntax für die Funktion lastindexof:

lastindexof(String, String, int)

lastindexof (Zeichenfolge, Zeichenfolge [, end_pos]): Die Indexanzahl beginnt mit 0, gibt den Index des letzten Vorkommens der Teilzeichenfolge vor end_pos zurück (falls angegeben) und gibt -1 zurück, wenn keine Übereinstimmung vorhanden ist. Das Argument end_pos ist optional.

Einige Beispiele für die Verwendung der Funktion lastindexof:

*|eval n = lastindexof(uri, '.com')

Anwendungsfall: Extrahieren Sie die Fläche aus dem Feld Typ in OCI-Auditlogs

Das Feld Typ enthält einen Wert wie com.oraclecloud.computeApi.GetInstance.

Um computeAPI aus dem obigen Wert zu extrahieren, können Sie das folgende Schema verwenden:

  • Identifizieren Sie die Position des letzten . mit lastIndexOf().
  • Identifizieren Sie aus diesem Offset die Position des vorherigen ., indem Sie einen anderen lastIndexOf() verwenden, aber den Offset angeben, von dem zurück gesucht werden soll.
  • Extrahieren Sie den Wert zwischen diesen beiden Positionen mit substr().
'Log Source' = 'OCI Audit Logs' 
| eval lastDot = lastIndexOf(Type, '.') 
| eval prevDot = lastIndexOf(Type, '.', lastDot - 1) 
| eval Area    = substr(Type, prevDot + 1, lastDot) 
| link Type, Area

Beispielausgabe:


Anwendungsfall: Extrahieren Sie den Bereich aus dem Feld "Typ" in OCI-Auditlogs

replace Funktionsdetails

Die Syntax für die Funktion replace:

replace(String, String, String, String, String, ..)

replace unterstützt mehrere Ersetzungen in einer einzelnen Funktion. Einige Beispiele für die Verwendung der Funktion replace:

  • *|eval newField = replace('aabbcc', 'bb', 'xx')
  • *|eval newField = replace('aabbcc', 'bb', 'xx', 'cc', 'yy')
  • Beispiel für mehrere Ersetzungsaktionen in einer einzelnen replace-Funktion:

    * | eval CopiedURL = 'https://cloud.oracle.com/loganalytics/explorer?viz=<VIZ>&encodedQuery=<QUERY>&startTime=<START_TIME>&endTime=<END_TIME>&region=us-phoenix-1&tenant=testtenant'| eval Query = encode64('* | stats count as "Log Records" by "Log Source"') 
    | eval 'Start Epoch' = toString(toNumber(toDate(dateRelative(30day)))) 
    | eval 'End Epoch' = toString(toNumber(now())) 
    | eval Viz = pie 
    | eval URL = replace(CopiedURL, '<VIZ>', Viz, '<QUERY>', Query, '<START_TIME>', 'Start Epoch', '<END_TIME>', 'End Epoch')

substr Funktionsdetails

Die Syntax für die Funktion substr:

substr(String, int [, int])

substr(Zeichenfolge, start_pos, end_pos - 1): Die Indexanzahl beginnt mit start_pos und endet mit end_pos - 1.

Im folgenden Beispiel ist newField die Teilzeichenfolge von aabbcc, wobei der Startindex (einschließlich) 2 und der Endindex (ausschließlich) 4 ist. Beachten Sie, dass die Indexanzahl für Zeichenfolgen mit 0 beginnt. Die resultierende Teilzeichenfolge lautet also bb.

*|eval newField = substr('aabbcc', 2, 4)

Anwendungsfälle, in denen die Funktion substr verwendet wird, finden Sie unter indexof-Funktionsdetails und lastindexof-Funktionsdetails.

Details zur url-Funktion

Syntax für die url-Funktion:

url(String, Name, Parameter)

Die Werte Name und Parameter sind optional.

  • String: Dabei kann es sich um eine URL oder einen der vordefinierten Kurznamen handeln. Beispiel:
    eval Link = url('https://www.oracle.com')
  • Name: Optionaler Name für die URL. Beispiel:
    eval Link = url('https://www.oracle.com', 'Oracle Home Page')
  • Parameter: Optionaler Parameter, wenn eine Verknüpfung für String verwendet wird. Beispiel:
    eval Link = url('tech', 'Search Oracle', 'ORA-600')

Einige Beispiele für die Verwendung der Funktion url:

  • * | stats latest(Status) as Status
     | eval ‘HTTP Status Code’ = url(‘https://www.google.com/search?q=http+code+’, Status, Status)
  • Status != null
     | eval 'HTTP Status Code' = url('https://www.google.com/search?q=http+code+', Status, Status)
     | stats count by Status

Beispiele für die Verwendung der Funktion url nach dem Befehl link:

  • * | link status
     | eval ‘HTTP Status Code’ = url(‘https://www.google.com/search?q=http+code+’, Status, Status)
  • * | link Type
     | stats latest(Status) as Status
     | eval ‘HTTP Status Code’ = url(‘[https://www.google.com/search?q=http+code+]’, Status, Status)

Von Oracle definierte url-Kurzschlüsse

Die folgenden von Oracle definierten Shortcuts können mit der Funktion url für den Befehl eval verwendet werden.

Short-Cut URL und Beschreibung Beispiel

ora

Suche:oracle

https://www.google.com/search?q=site:oracle.com%20

Link generieren, um alle oracle.com-Zeichenfolgen nach den angegebenen Zeichenfolgen zu suchen

eval Help = url('ora', 'Search Oracle', 'ORA-600')

eval Help = url('search:oracle', 'Search Oracle', 'ORA-600')

Technik

oracle-tech

https://community.oracle.com/tech/search?query=

Link zum Durchsuchen von Oracle Technologieforen generieren

eval Help = url('tech', 'Search Oracle Tech Forums', 'ORA-600')

eval Help = url('oracle-tech', 'Search Oracle Tech Forums', 'ORA-600')

Mosc

oracle-mosc

https://community.oracle.com/mosc/search?query=

Link zum Durchsuchen von My Oracle Support-Foren generieren

eval Help = url('mosc', 'Search Oracle Support', 'ORA-600')

eval Help = url('oracle-mosc', 'Search Oracle Support', 'ORA-600')

google https://www.google.com/search?q=

Link zur Suche mit Google generieren

eval 'More Info' = url('google', 'Search using Google', 'ORA-600')

Bing https://www.bing.com/search?q=

Link zur Suche mit Bing generieren

eval 'More Info' = url('bing', 'Search using Bing', 'ORA-600')

ddg

Entenvogel

https://duckduckgo.com/?q=

Link zur Suche mit DuckDuckGo generieren

eval 'More Info' = url('ddg', 'Search using DuckDuckGo', 'ORA-600')

eval 'More Info' = url('duckduckgo', 'Search using DuckDuckGo', 'ORA-600')

so

Stackoverflow

https://stackoverflow.com/search?q=

Generieren Sie einen Link zur Suche unter StackOverflow

eval 'More Info' = url('so', 'Search using StackOverflow', 'ORA-600')

eval 'More Info' = url('stackoverflow', 'Search using StackOverflow', 'ORA-600')

Cve

https://www.cve.org/CVERecord?id=

Link für die angegebene CVE-ID generieren

* | link

| eval 'CVE Details' = url(cve, 'CVE-2021-22931 - Improper Null Termination in Node.js', 'CVE-2021-22931')

Generates a link to https://www.cve.org/CVERecord?id=CVE-2021-22931