0

PL/SQLのみ sql について話していないsql(ORACLE 9i)で例外を処理する方法はありますか?

数値とリテラルの両方を含む列の値を除算しようとしていたので、任意の数値で割り切れるかのように、数値のみを取り出す必要があります.

それらのエラーを処理する方法は?提案してください!!

4

3 に答える 3

1

データをフィルタリングする単純なIS_NUMERICPL/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
于 2010-03-29T15:28:19.780 に答える
0

特にOracleについてはわかりませんが、@@ ERRORは、実行中にSQLステートメントが生成するエラーコードを返す必要があります。私はそれを回避して例外処理を実行します:


If @@ERROR <> 0
BEGIN
    ...
    [Your Code Here]
    ...
END

于 2010-03-29T15:36:50.290 に答える
0

oracleの例外は、exception when ... then句で処理されます。必要なのは、例外コードを見つけることだけです。

begin
  --Your code here
exception when YOUR_EXCEPTION_CODE then
  --Exception handling here
end;
于 2010-03-29T15:25:07.470 に答える