Oracle Table字段TYPE声明问题

时间:2014-08-13 14:42:35

标签: sql oracle plsql

我有一个程序,我使用%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; 

我收到了错误消息。我怎样才能实现它?

1 个答案:

答案 0 :(得分:1)

不,你不能。类型声明是静态的。它可以使用%type推断,但仍然可以编译为静态类型定义。

在您的情况下,您尝试引用'属性'来自varchar2,这是不可能的(Oracle在varchar2上没有属性)。