我正在处理的一个函数遇到了问题.该函数旨在根据输入参数和该表的请求列名检索列值.但是,当我try 编译它的代码时,如下所示:
CREATE OR REPLACE FUNCTION FIND_TEST_TABLE_COLUMN(
IN_COLUMN1 TEST_TABLE.COLUMN1 % TYPE,
IN_COLUMN2 TEST_TABLE.COLUMN2 % TYPE,
IN_COLUMN3 TEST_TABLE.COLUMN3 % TYPE,
IN_COLUMN4 TEST_TABLE.COLUMN4 % TYPE,
IN_REQUESTED_COLUMN VARCHAR2
) RETURN VARCHAR2 IS
C_TEST_TABLE SYS_REFCURSOR;
RESULT VARCHAR2(255);
BEGIN
IF IN_COLUMN4 IS NULL THEN
OPEN C_TEST_TABLE FOR
SELECT *
FROM TEST_TABLE
WHERE COLUMN1 = COLUMN1
AND COLUMN2 = IN_COLUMN2
AND COLUMN3 = IN_COLUMN3;
ELSIF IN_COLUMN4 IS NOT NULL THEN
OPEN C_TEST_TABLE FOR
SELECT *
FROM TEST_TABLE
WHERE COLUMN1 = COLUMN1
AND COLUMN2 = IN_COLUMN2
AND COLUMN3 = IN_COLUMN3
AND COLUMN4 = IN_COLUMN4;
END IF;
FOR C_TEST_TABLE_REC IN C_TEST_TABLE
LOOP
IF IN_REQUESTED_COLUMN = 'COLUMN1' THEN
RESULT := C_TEST_TABLE_REC.COLUMN1;
EXIT;
ELSIF IN_REQUESTED_COLUMN = 'COLUMN2' THEN
RESULT := C_TEST_TABLE_REC.COLUMN2;
EXIT;
ELSIF IN_REQUESTED_COLUMN = 'COLUMN3' THEN
RESULT := C_TEST_TABLE_REC.COLUMN3;
EXIT;
END IF;
END LOOP;
RETURN RESULT;
END;
我收到以下错误:
[警告]ORA-24344:编译错误为19/27,成功-00221: ‘c_test_table’不是过程或未定义19/5 PL/SQL: 已忽略语句(1:0):警告:已编译,但已编译 错误
这表明C_TEST_TABLE不能在声明块之后使用