Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 尝试通过函数调用实现动态sql_Plsql - Fatal编程技术网

Plsql 尝试通过函数调用实现动态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

我最近在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(: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编译错误。