おそらく基本的な質問を前もってお詫び申し上げます。私は学生で、今がクランチタイムです!
Oracle 10g Express を使用しています。
関数を作成しました:
create or replace FUNCTION test_glaccounts_description
(
account_description_param VARCHAR2
)
RETURN NUMBER
AS
description_dup_var NUMBER;
BEGIN
SELECT 1
INTO description_dup_var
FROM general_ledger_accounts
WHERE account_description = account_description_param;
RETURN description_dup_var;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 0;
END;
そして、プロシージャでその関数を使用したいと思います。私はもう試した:
PROCEDURE insert_gla_with_test
(
account_number_param NUMBER,
account_description_param VARCHAR2
)
AS
BEGIN
IF test_glaccounts_description = 1 THEN
INSERT INTO general_ledger_accounts
VALUES (account_number_param, account_description_param);
ELSE raise_application_error (-20001, 'Duplicate account description');
END IF;
END;
しかし、「test_gla_accounts」行が好きではありません.....何が間違っていますか? 私の理解では、関数は 1 または 0 の値を返します。関数が 1 を返した場合、テーブルにパラメーター フィールドを追加したいと思います。関数が 0 を返した場合、手順でエラーを発生させたいと思います。