zu 1)

Eine Funktion für Prüfung auf Numerisch gibt es leider nicht, man kann nur mit Casting (z.B.: dec(charfld, 10, 2) as mydec) einen Versuch der Umwandlung vornehmen.
Klappt dies, wird der richtige Wert zurückgegeben ansonsten das Fehlerflag gesetzt.

Vielleicht hat ja schon mal jemand eine UDF (Userdefined Function) geschrieben, die dieses Problem löst ?

zu 2)

WHENEVER ist eine spezielle Form des PreCompilers und keine SQL-Anweisung, daher gibt es diese Funktion in SQL nicht.
Nach den entsprechenden SQL-Statements ist halt der SqlCode abzufragen.