Plsql 尝试通过函数调用实现动态sql
我最近在cide中实现了动态sql,这是一个全新的概念。我尝试使用以下函数,该函数将采用列名并通过动态函数调用更新值。但是,该函数在编译时出错。请查找以下代码:Plsql 尝试通过函数调用实现动态sql,plsql,Plsql,我最近在cide中实现了动态sql,这是一个全新的概念。我尝试使用以下函数,该函数将采用列名并通过动态函数调用更新值。但是,该函数在编译时出错。请查找以下代码: function upd_tab(col_name in varchar2,val in number) return pls_integer is BEGIN EXECUTE IMMEDIATE 'UPDATE EMPLOYEE1 SET '||col_name||'= :THE_VALUE WHERE EMP_NAME IN(:NA
function upd_tab(col_name in varchar2,val in number)
return pls_integer
is
BEGIN
EXECUTE IMMEDIATE 'UPDATE EMPLOYEE1 SET '||col_name||'= :THE_VALUE WHERE EMP_NAME IN(:NAME1,:Nme2)'
using val,john,aaron;
RETURN SQL%ROWCOUNT;
END;
提前感谢您的帮助。这里您必须在using子句中声明变量。希望下面的代码片段能有所帮助
FUNCTION upd_tab(
col_name IN VARCHAR2,
val IN NUMBER)
RETURN pls_integer
IS
BEGIN
EXECUTE IMMEDIATE 'UPDATE EMPLOYEE1 SET '||col_name||'= :THE_VALUE WHERE EMP_NAME IN(:NAME1,:Nme2)' USING val,'john','aaron';
RETURN SQL%ROWCOUNT;
END;
您得到了什么错误?我想说,
john
和aron
没有声明。错误:[ORA-06550:第2行,第46列:PLS-00201:标识符“COL_NAME”必须声明ORA-06550:第2行,第3列:PL/SQL:语句忽略ORA-06550:第3行,第3列:PLS-00372:在过程中,返回语句不能包含表达式ORA-06550:第3行,第3列:PL/SQL:语句忽略06550.00000-“第%s行,第%s列:\n%s”*原因:通常是PL/SQL编译错误。]大家好,非常感谢大家关注这个问题。但是,当我尝试您提供的代码片段时…它给出了以下错误。ORA-06550:第2行,第46列:PLS-00201:标识符“COL_NAME”必须声明为ORA-06550:第2行,第3列:PL/SQL:语句忽略ORA-06550:第3行,第3列:PLS-00372:在过程中,返回语句不能包含表达式ORA-06550:第3行第3列:PL/SQL:语句忽略06550.00000-“第%s行第%s列:\n%s”*原因:通常是PL/SQL编译错误。