Oracle:检查变量的数据类型

时间:2012-11-20 13:58:58

标签: oracle10g

如何在oracle 10g过程中检查变量是否为varchar / date / numeric数据类型? 就像猜测我在一个过程中有一个变量,它将填充各种数据(可能是数字,字符串或日期)。如何在Oracle中找到这个变量的数据类型???

Declare
returnValue varchar2;

Begin
Text:=select col_name from tab_name where ID=:ID1;
EXECUTE IMMEDIATE  Text into returnValue;
End;

这里'ID1'将动态发送。“col_name”可以包含任何数据。 我必须检查“returnValue”变量中有什么类型的值。?

请提出一些答案。

2 个答案:

答案 0 :(得分:0)

你可以做这样的事情,咬得不是特别好:

    declare
    v_date DATE;
    v_number NUMBER

    begin
        select to_date(variable_name,<date_format>) into v_date from dual;

    exception when others then 
        //its not a date
        begin
          select to_date(variable_name,<date_format>) into v_number from dual;
        exception when others then 
          //its not a number
          ...
          ...
        end;
    end;

理想情况下,您不应该将多种类型的数据放入单个VARCHAR2列中 - 那么您首先就不会遇到此问题..

答案 1 :(得分:0)

您应该通过

声明column_name
returnvalue tablename.columnname%TYPE;

因此,通过这种方式,列的数据类型将具有存储在returnvalue变量

中的值

更新1

returnValue tab_name.col_name%TYPE;

begin
select col_name into returnValue from tab_name where ID=:ID1;
return returnValue;
end;

更新2

您可以通过以下方式获取以下数据类型

select data_type || '(' || data_length || ')' col from user_tab_columns where
TABLE_NAME = '<YOURTABLE>'