以下Oracle数据库代码中有哪些错误?

What are the errors in the following Oracle database code?

在 Oracle 中,STAFF table 有四列:

id, first_name, last_name, salary

idsalaryNUMBER 数据类型,而列 first_namelast_nameVARCHAR2(20) 数据类型。

这是操纵 STAFF table 的 PL/SQL 代码。有没有错误?

v_id NUMBER := 200;
v_fname VARCHAR2(20);
v_lname
v_sal NUMBER;
BEGIN
SELECT first_name, last_name, salary
INTO v_fname, v_lname
FROM STAFF
WHERE id=v_id;
DBMS_OUTPUT.PUT(v_fname||‘ ‘||v_fname||’ makes ’||v_sal);

您似乎没有提供 DECLARE 语句,并且遗漏了 v_lname 的类型值。此外,您没有在 INTO 子句中包含 v_sal 。试试这个:

DECLARE
    v_id NUMBER := 200;
    v_fname VARCHAR2(20);
    v_lname VARCHAR2(20);
    v_sal NUMBER;
BEGIN
    SELECT first_name, last_name, salary
    INTO v_fname, v_lname, v_sal
    FROM STAFF
    WHERE id=v_id;
    DBMS_OUTPUT.PUT(v_fname||' '||v_fname||' makes '||v_sal);
END;

你需要:

  • DECLARE开头。
  • END; 在末尾,然后在换行符上 /
  • ' 用于字符串文字而不是
  • DBMS_OUTPUT.PUT_LINE 而不是 DBMS_OUTPUT.PUT(不会将行刷新到缓冲区)。
DECLARE
    v_id NUMBER := 200;
    v_fname VARCHAR2(20);
    v_lname VARCHAR2(20);
    v_sal NUMBER;
BEGIN
    SELECT first_name, last_name, salary
    INTO v_fname, v_lname, v_sal
    FROM STAFF
    WHERE id=v_id;
    DBMS_OUTPUT.PUT_LINE(v_fname||' '||v_fname||' makes '||v_sal);
END;
/

db<>fiddle here