PL/SQLのみ sql について話していないsql(ORACLE 9i)で例外を処理する方法はありますか?
数値とリテラルの両方を含む列の値を除算しようとしていたので、任意の数値で割り切れるかのように、数値のみを取り出す必要があります.
それらのエラーを処理する方法は?提案してください!!
データをフィルタリングする単純なIS_NUMERIC
PL/SQL 関数を記述します。
CREATE OR REPLACE FUNCTION IS_NUMERIC (p_input varchar2)
RETURN NUMBER
DETERMINISTIC
IS
l_checkvar number;
BEGIN
l_checkvar := coalesce(to_number(p_input), 'X'); -- maps null as non-numeric
return 1;
EXCEPTION
WHEN OTHERS THEN
return 0;
END;
/
次に、クエリは次のようになります。
SELECT MY_NUMBER / MY_MIXED_VALUES
FROM MY_TABLE
WHERE IS_NUMERIC (MY_MIXED_VALUES) = 1
特にOracleについてはわかりませんが、@@ ERRORは、実行中にSQLステートメントが生成するエラーコードを返す必要があります。私はそれを回避して例外処理を実行します:
If @@ERROR <> 0
BEGIN
...
[Your Code Here]
...
END
oracleの例外は、exception when ... then
句で処理されます。必要なのは、例外コードを見つけることだけです。
begin
--Your code here
exception when YOUR_EXCEPTION_CODE then
--Exception handling here
end;