SQL*Plus 不运行 PL/SQL 块
Posted
技术标签:
【中文标题】SQL*Plus 不运行 PL/SQL 块【英文标题】:SQL*Plus does not run PL/SQL block 【发布时间】:2020-04-12 21:09:34 【问题描述】:我在 SQL*Plus 中运行我的 PL/SQL 脚本时遇到问题。我可以正常运行 SQL 命令,但是当我想运行任何 PL/SQL 代码时,它什么也没有。请参阅下面的代码和输出。
DECLARE
x_salary employee.salary%TYPE;
BEGIN
select salary
into x_salary
from employee
where ssn=&enter_ssn;
--Output the result
DBMS_OUTPUT.PUT_LINE('Salary is ' || x_salary);
EXCEPTION
--Output when no records are returned
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE ('No employee found');
WHEN others THEN
DBMS_OUTPUT.PUT_LINE ('Error encountered, but cause unknown');
END;
【问题讨论】:
分号后加斜线 END 之后?还是在命令行中? 在命令行中。 @BarbarosÖzhan - “在命令行中”是什么意思? OP 说这是一个 script - 这意味着他没有以交互方式运行它。斜线应该在 END 之后;单独换行。 @BarbarosÖzhan - 啊,哈哈 - 不,我通常不打开图像。但即便如此,反斜杠还是属于脚本,而不是在它之后......(我确实明白你的意思。) 【参考方案1】:PL/SQL过程在sqlplus下过程定义后需要/
DECLARE
...
BEGIN
...
END;
/
【讨论】:
如果这个答案对你有帮助,请考虑将其标记为答案。谢谢【参考方案2】:在脚本中 END;
之后的新行中添加一个斜杠 /
。
来自documentation:
您必须在每个 SQL 命令的末尾包含一个分号,并在文件中每个 PL/SQL 块之后的一行中单独包含一个斜杠 (/)。
然后在 SQL*Plus 命令行中执行 SQL 文件为:
@C:\your_script.sql;
【讨论】:
以上是关于SQL*Plus 不运行 PL/SQL 块的主要内容,如果未能解决你的问题,请参考以下文章
pl/sql developer中写SQL时出现ORA-06550和PLS-00553