0
我想创建PL/SQL函数接收表名和列名和条件,然后从表中返回其名称在参数中传递的一个值。PL SQL动态SQL
我所创建的函数是这样的:
create or replace function get_dynamic
(tbl_name nvarchar2,col_name nvarchar2 ,cond nvarchar2)
return nvarchar2 is
res nvarchar2(30);
code varchar2(500):='begin select :col_name into :res from :tbl_name where :cond; end;';
begin
EXECUTE IMMEDIATE code using in col_name , out res , in tbl_name, in cond;
return res;
end;
,当我使用此代码调用该函数没有任何问题但创建的函数:
begin
DBMS_OUTPUT.PUT_LINE(get_dynamic('EMPLOYEES', 'FIRST_NAME', 'EMPLOYEE_ID=100'));
end;
我得到了自己的错误:
ERROR at line 1:
ORA-06550: line 1, column 51:
PL/SQL: ORA-00903: invalid table name ORA-06550: line 1, column 7:
PL/SQL: SQL Statement ignored ORA-06512: at "HR.GET_DYNAMIC", line 7 ORA-06512: at line 2
虽然表名,列na我和条件都是正确的。
帮助请!..