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;

理想的には、複数のタイプのデータを 1 つの VARCHAR2 列に入れるべきではありません。そうすれば、そもそもこの問題は発生しません..

于 2012-11-20T14:10:06.267 に答える