0

如何在 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”变量中有什么样的值。?

请提出一些答案。

4

2 回答 2

0

你应该声明column_nameby

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>'
于 2012-11-20T14:39:55.263 回答
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 列 - 那么您首先就不会有这个问题..

于 2012-11-20T14:10:06.267 回答