gpt4 book ai didi

oracle - 如何解决 SP2-0552 : Bind variable not declared?

转载 作者:行者123 更新时间:2023-12-05 01:02:09 28 4
gpt4 key购买 nike

当我运行这个 PL/SQL block 时:

SQL> set serveroutput on
SQL> declare
2 v_max_sal NUMBER(20)
3 begin
4 select max(sal) INTO :v_max_sal
5 from emp e, dept d
6 where e.deptno=d.deptno
7 and d.dname='SALES';
8 END;
9 /

它向我抛出下一个错误:SP2-0552:未声明绑定(bind)变量“V_MAX_SAL”。我遗漏了什么或做错了什么?

最佳答案

如果你确实想要一个绑定(bind)变量,那么你需要在 block 之外声明它:

variable v_max_sal number;

begin
select max(sal)
into :v_max_sal
from dept d
join emp e
on e.deptno=d.deptno
where d.dname='SALES';
end;
/

print v_max_sal

请注意 SQL*Plus client variableprint命令,并且 block 中不再有 declare 部分,因为您现在没有或不需要本地 PL/SQL 变量。局部变量在查询中使用时可以充当绑定(bind)变量 - 解析器会看到它,并且您会在查询的计划中看到占位符 - 但它并不完全相同,因为您通常需要绑定(bind)变量可以在 Pl/SQL 代码之外引用。

我也使用了现代连接语法,尽管这与问题无关。

关于oracle - 如何解决 SP2-0552 : Bind variable not declared?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36114265/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com