我有一个程序,我使用%TYPE
来声明我的变量。截至目前,它仅适用于一个表,即EMPLOYEES
:
CREATE OR REPLACE PROCEDURE MYPROCEDURE
DECLARE
filed2 EMPLOYEES.name%TYPE;
END;
现在我想将其扩展到具有相同几个公共表的其他表。所以我将表名作为参数传递。这里如何使用TYPE
语法,因为表名在变量中。如果我这样做:
CREATE OR REPLACE PROCEDURE MYPROCEDURE (myTable IN VARCHAR2)
DECLARE
filed2 myTable.name%TYPE;
END;
我收到了错误消息。我怎样才能实现它?
答案 0 :(得分:1)
不,你不能。类型声明是静态的。它可以使用%type
推断,但仍然可以编译为静态类型定义。
在您的情况下,您尝试引用'属性'来自varchar2
,这是不可能的(Oracle在varchar2
上没有属性)。