1

関数があり、実行時に列の名前を判別したい。このために、引数として1つの変数を渡しますcolumn_name

以下は、関数を含むコードです。

l_column_name as varchar2(100)

Begin 

If(column_name='emp_name')
  Then 
  l_column_name:=EMPLOYEE.EMP_NAME
End If;

   begin
 select l_column_name from employee
end;

上記のコードでl_column_name:=EMPLOYEE.EMP_NAMEは、エラーが発生しています

このコンテキストでは許可されていません。

どんな助けでも大いに感謝されます。

よろしく、Chaitu

4

1 に答える 1

4

エラーが示すように、これを行うことはできません。

PL/SQL Execute Immediate の使用を検討する必要があります: http://docs.oracle.com/cd/B14117_01/appdev.101/b10807/13_elems017.htm

declare
  l_column_name as varchar2(100);
  l_column_results as VARCHAR2(100);
begin
  if (column_name = 'emp_name') then
     l_column_name := 'EMPLOYEE.EMP_NAME';
  end if;
  query := 'SELECT ' || l_column_name || ' from employeee';
  EXECUTE IMMEDIATE query INTO l_column_results;
end;
于 2012-12-19T04:08:47.357 に答える