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给出了错误

在这种情况下不允许。

非常感谢任何帮助。

问候,柴图

4

1 回答 1

4

正如错误所说,你不能这样做。

您需要考虑使用 PL/SQL 立即执行: 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 回答