PL/SQL声明绑定变量报SP2-0552 提示变量未声明如何解决
问题根因
你的代码存在三处语法错误,直接触发绑定变量声明失败、引用报错:
- 赋值语句格式错误:
exec执行赋值时,绑定变量的前缀冒号:和变量名v_bind1之间不能有空格,否则客户端无法识别绑定变量引用 - PL/SQL块内引用规则错误:在PL/SQL块中使用客户端声明的绑定变量,必须在变量名前加冒号
:作为前缀,否则会被判定为未定义的PL/SQL局部变量 - 声明规则不匹配:一是声明的
VARCHAR2(10)长度仅10字节,但待赋值的字符串RebellionRider实际长度为14字节,超出长度限制;二是VARIABLE是SQL*Plus客户端命令而非PL/SQL语法,部分旧版客户端不识别行尾多余的PL/SQL分号,会直接输出命令用法提示,判定声明失败
修正后可执行代码
-- 调整绑定变量长度到足够容纳字符串,旧版客户端可去掉行尾分号 VARIABLE v_bind1 VARCHAR2(20) -- 赋值时冒号紧贴变量名,不要加空格 exec :v_bind1 := 'RebellionRider'; SET SERVEROUTPUT ON; BEGIN -- 块内引用绑定变量必须加:前缀 dbms_output.put_line(:v_bind1); END; /
运行注意事项
VARIABLE、exec、SET SERVEROUTPUT ON均为Oracle命令窗口专属的客户端命令,需要在SQL*Plus、PL/SQL Developer命令窗口这类兼容环境执行,普通SQL窗口、第三方不兼容客户端无法识别这类命令- PL/SQL块结尾的斜杠
/不能省略,作用是通知客户端执行缓冲区中存储的PL/SQL块,省略后块不会实际运行 - 代码修正后执行,会正常输出
RebellionRider,不再触发SP2-0552报错
内容的提问来源于stack exchange,提问作者S_P
相关产品推荐
相关产品推荐

