Oracle函数从带有union的select返回值
我试图将此函数添加到oracle db中,但它不断抛出以下错误: 10/72 PLS-00049:坏绑定变量“COMMITID” 12/90 PLS-00049:坏绑定变量“COMMITID” 14/76 PLS-00049:坏绑定变量“COMMITID” 17/16 PL/SQL:ORA-00933:SQL命令未正确结束Oracle函数从带有union的select返回值,oracle,Oracle,我试图将此函数添加到oracle db中,但它不断抛出以下错误: 10/72 PLS-00049:坏绑定变量“COMMITID” 12/90 PLS-00049:坏绑定变量“COMMITID” 14/76 PLS-00049:坏绑定变量“COMMITID” 17/16 PL/SQL:ORA-00933:SQL命令未正确结束 内部select语句工作正常,但当我试图在函数中实现它时,我无法让它接受它。我甚至尝试删除select语句中的参数绑定作为起始位置,但它会引发不同的错误。函数中不需要绑定变量
内部select语句工作正常,但当我试图在函数中实现它时,我无法让它接受它。我甚至尝试删除select语句中的参数绑定作为起始位置,但它会引发不同的错误。函数中不需要绑定变量;您正在函数的SQL部分使用函数参数,因此可以简单地通过其名称来引用它。 例如:
SQL> create or replace function f1(p IN number) return number is
2 retVal number;
3 begin
4 select :p * 2 into retVal from dual;
5 return retVal;
6 end;
7 /
Warning: Function created with compilation errors.
SQL> sho err
Errors for FUNCTION F1:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/12 PLS-00049: bad bind variable 'P'
正确的方法:
SQL> create or replace function f1(p IN number) return number is
2 retVal number;
3 begin
4 select f1.p * 2 into retVal from dual;
5 return retVal;
6 end;
7 /
Function created.
SQL> select f1(3) from dual;
F1(3)
----------
6
为了避免潜在的问题,我建议指定别名,即
选择f1.p*2从dual返回代码>
SQL> create or replace function f1(p IN number) return number is
2 retVal number;
3 begin
4 select f1.p * 2 into retVal from dual;
5 return retVal;
6 end;
7 /
Function created.
SQL> select f1(3) from dual;
F1(3)
----------
6