【问题标题】:How to create a PL SQL procedure to display all records from relation Employee如何创建一个 PL SQL 过程来显示来自关系 Employee 的所有记录
【发布时间】:2021-07-12 08:22:28
【问题描述】:

编写一个 PL/SQL 过程,将员工表中的所有记录显示为“员工有一个在部门工作的 ID”。

我创建了一个过程,但创建时出现编译错误。

CREATE OR REPLACE PROCEDURE get_employee_information
AS
BEGIN
FOR aRow IN (SELECT NAME,ID,DEPARTMENT FROM Employee)
LOOP
dbms_output.put_line ("Employee name" || aRow.NAME "having ID " || aRow.ID "working in" || aRow.DEPARTMENT)
END LOOP;
END get_employee_information ;
/

你能写一个简单易懂的程序吗,因为我是 PL SQL 的新手。 更正后它仍然会出现编译错误。

SQL> CREATE OR REPLACE PROCEDURE get_Employees_Information
  2  AS
  3  BEGIN
  4  FOR aRow IN (SELECT NAME,ID,DEPARTMENT FROM EMPLOYEE)
  5  LOOP
  6  dbms_ouput.put_line (' The Employee ' || aRow.NAME );
  7  dbms_ouput.put_line (' having ID ' || aRow.ID );
  8  dbms_ouput.put_line (' working in department ' || aRow.DEPARTMENT );
  9  END LOOP;
 10  END;
 11  /

警告:过程创建时出现编译错误。 谁能帮帮我!

【问题讨论】:

  • sql*plus 中,输入show errors 以查看编译错误。如果这不能帮助您修复代码,请编辑您的问题以包含错误。

标签: sql database oracle plsql


【解决方案1】:

第 6 行未正确使用串联 (||)。您不能只将变量放在常量旁边,如片段aRow.NAME "having ID " 中那样。此外,在 SQL 中,不幸的是字符串文字属于单引号,而不是双引号。

你拼错了dbms_output。如果你真的想把所有东西都放在一行里,你应该这样做

dbms_output.put_line( 'text ' || field || ' text ' || field || ... )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2021-12-05
    • 2011-08-30
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多