如何在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”变量中有什么类型的值。?
请提出一些答案。
答案 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>'