Aufruf einer Funktion innerhalb einer Prozedur
Ich entschuldige mich im Voraus für die wahrscheinlich wichtigste Frage. Ich bin student und es ist crunch time!
Ich bin mit Oracle 10g Express.
Erstellte ich eine Funktion:
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;
Und verwenden möchten, die Funktion in eine Prozedur.
Ich habe versucht:
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;
Aber es ist nicht wie die "test_gla_accounts" - Zeile.....was mache ich falsch?
Nach meinem Verständnis, gibt die Funktion einen Wert von 1 oder 0, in den Verfahren, wenn die Funktion zurückgegeben, eine 1, ich möchte die param Felder, die der Tabelle Hinzugefügt. Wenn die Funktion zurückgegeben 0, ich möchte die Prozedur zum auslösen des Fehlers.
Es ist immer hilfreich, poste den vollständigen Fehler-stack. Etwas zu sagen wie "Sie mag es nicht," sagt uns nicht, welche Fehlermeldung Sie bekommen. Ich dachte an die Fehler in meiner Antwort weiter unten. Wenn ich falsch geraten (könnte es mehr syntax-Fehler, zum Beispiel), die Buchung der volle Fehler-stack wird sehr nützlich sein.
InformationsquelleAutor Christa L | 2012-12-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
test_glaccounts_description
einen parameter nimmt (account_description_param
) und gibt einenNUMBER
. Um die Funktion aufrufen, daher müssen Sie einen parameter übergeben. Vorausgesetzt, Sie wollen den pass in dieaccount_description_param
übergeben wird, in derinsert_gla_with_test
VerfahrenInformationsquelleAutor Justin Cave