【问题标题】:SQL*Plus does not run PL/SQL blockSQL*Plus 不运行 PL/SQL 块
【发布时间】: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 - 啊,哈哈 - 不,我通常不打开图像。但即便如此,反斜杠还是属于脚本,而不是在它之后......(我确实明白你的意思。)

标签: oracle plsql sqlplus


【解决方案1】:

PL/SQL过程在sqlplus下过程定义后需要/

DECLARE
 ...
BEGIN
 ...
END;

/

【讨论】:

  • 如果这个答案对你有帮助,请考虑将其标记为答案。谢谢
【解决方案2】:

在脚本中 END; 之后的新行中添加一个斜杠 /

来自documentation

您必须在每个 SQL 命令的末尾包含一个分号,并在文件中每个 PL/SQL 块之后的一行中单独包含一个斜杠 (/)

然后在 SQL*Plus 命令行中执行 SQL 文件为:

@C:\your_script.sql;

【讨论】:

    猜你喜欢
    • 2012-02-08
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多