相关疑难解决方法(0)

如何在PL/SQL中查看变量的类型?

PL/SQL中是否有一个函数来显示变量的确切类型,比如SQL中的DUMP函数?

我尝试了以下内容

DECLARE
   l_variable   INTEGER := 1;
BEGIN
   DBMS_OUTPUT.PUT_LINE (DUMP (l_variable));
END;
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误:

PLS-00204:函数或伪列'DUMP'只能在SQL语句中使用

oracle reflection variables plsql dump

9
推荐指数
1
解决办法
2万
查看次数

在PLSQL中反思?

我正在编写一个过程来处理存储在ANYDATA中的用户定义对象.对象类型和属性名称只能在运行时知道,因此我无法在declare部分中为它定义viarable.在Java中,我可以使用反射来处理它,我可以知道类名和字段名.然后我可以通过反射访问这些字段.有没有办法在PLSQL中这样做?我现在的想法是在程序中动态创建一个sql字符串并执行它.但这不是我想要的.

假设用户A将ADT类型定义为create or replace type Person_type as object (fname varchar2(10), lname varchar2(10));并创建对象实例并将其插入ANYDATA.

在我的程序中,不知怎的,我知道我需要处理这个对象的第一个属性,即fname.因此,如果首先知道adt类型,我的代码将是:

declare
  adobject A.Person_type; -- HERE! I don't know the type yet, so I can't define adobject!
  tempAnydata anydata;
  rt number;
  vbuffer varchar2(10);
  ...
begin
   select somecolumn 
   into tempAnydata 
   from sometable 
   where something='something' for update;

   rt := tempAnydata.GetObject(adobject);

   vbuffer := adobject.fname; -- HERE! I don't know the attribute name is fname!
   -- deal with vbuffer here
end;
Run Code Online (Sandbox Code Playgroud)

那么我应该怎样做才能动态地制作它呢?提前致谢.

oracle plsql user-defined-types

8
推荐指数
1
解决办法
5288
查看次数

标签 统计

oracle ×2

plsql ×2

dump ×1

reflection ×1

user-defined-types ×1

variables ×1