これは、実際の問題の一般的な形式です。サブヘッドに応じて金額を取得するために、列名を渡しています。
Officewisely のように、それぞれの年を持つ異なるサブ ヘッド フィールドのテーブルのテーブル XYZ を仮定します。
id, office_id, subhead1, subhead2, subhead3, year
現在、何が起こっているかというと、パラメーターtest_column_name
が機能していません。そこにフィールドを手動で配置すると、うまく機能します。私はエラーをスローします:
"ORA-01722:invalid number"
私の機能は次のようになります:
CREATE OR REPLACE FUNCTION TEST_FUNCTION (test_column_name in varchar)
RETURN float
IS
AMOUNT float;
BEGIN
SELECT
SUM(AMOUNT) INTO AMOUNT FROM TEST_TABLE
where
TEST_FIELD IN
(
SELECT DISTINCT test_column_name FROM XYZ_TABLE WHERE XYZ_YEAR='2012'
);
return AMOUNT;
END TEST_FUNCTION;
/
なにか提案を ?