【问题标题】:How to fix strange oracle PL/SQL error - "PLS-00049: bad bind variable"如何修复奇怪的 oracle PL/SQL 错误 - “PLS-00049: bad bind variable”
【发布时间】:2020-06-27 17:25:47
【问题描述】:

我正在尝试编写一个执行 oracle PL/SQL 函数,该函数返回表中的记录数,其中一个字段与某个名称匹配。

这是我的代码:

create or replace function getNum
return number
as
v_x number;
begin
SELECT COUNT(*) INTO :v_x
FROM UserResponses WHERE NHSPlatform_Name = 'Improvement Data and Analytics';
return v_x;

end;
/

execute getNum();

我不断收到奇怪的错误:

函数 GETNUM 编译

行/列错误 --------- ----------------------------------------- -------------------- 6/22 PLS-00049:错误的绑定变量“V_X”错误:检查编译器日志

从第 85 行开始的错误命令 - BEGIN getNum();结尾;错误 报告 - ORA-06550:第 1 行,第 7 列:PLS-00905:对象 B7011343.GETNUM 无效 ORA-06550:第 1 行,第 7 列:PL/SQL: 语句被忽略 06550. 00000 - “第 %s 行,第 %s 列:\n%s” *原因:通常是 PL/SQL 编译错误。 *行动:

【问题讨论】:

  • 嗨@J.Whitehead 你看过这个答案和其他答案吗?你知道如何接受答案吗?

标签: sql oracle function plsql


【解决方案1】:

首先要纠正您的功能,正如 pmdba 在他的回答中所写的那样。 这将是一个正确的函数:

create or replace function getNum
return number
as
v_x number;
begin
SELECT COUNT(*) INTO v_x
FROM UserResponses WHERE NHSPlatform_Name = 'Improvement Data and Analytics';
return v_x;

end;
/

那么你需要以正确的方式调用你的函数。这是一种称呼方式:

select getNum from dual;

here is a small demo

【讨论】:

【解决方案2】:

从选择语句中删除“:”:

create or replace function getNum
return number
as
v_x number;
begin
SELECT COUNT(*) INTO v_x
FROM UserResponses WHERE NHSPlatform_Name = 'Improvement Data and Analytics';
return v_x;

end;
/

select getNum() from dual;

【讨论】:

  • 执行此操作后,仍然出现以下错误: Error started at line : 85 in command - BEGIN getNum();结尾;错误报告 - ORA-06550:第 1 行,第 7 列:PLS-00221:'GETNUM' 不是过程或未定义 ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略 06550。00000 -“行 % s,列 %s:\n%s" *原因:通常是 PL/SQL 编译错误。 *行动:
  • 我在最后更新了函数调用以使用 select 语句。
【解决方案3】:

试试这个:

SQL> VARIABLE ret_val NUMBER;
SQL> execute :ret_val := getnum;

PL/SQL procedure successfully completed.

SQL> select :ret_val from dual;

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 2021-02-20
    • 2015-08-09
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多