create or replace package body stu_package
as
procedure select_student(id number)
is
name varchar2(20);
begin
select sname into name from students where sid=id;
dbms_output.put_line(name);
end select_ student;
end stu_package;
Run Code Online (Sandbox Code Playgroud)
这不是“绝对”正确的,因为在过程结束时应删除一个空格:
end select_ student;
Run Code Online (Sandbox Code Playgroud)
除此之外,是的-可以。测试用例:
SQL> create table students (sid number, sname varchar2(10));
Table created.
SQL> insert into students values (1, 'LF');
1 row created.
Run Code Online (Sandbox Code Playgroud)
包装规格:
SQL> create or replace package stu_package as
2 procedure select_student(id number);
3 end;
4 /
Package created.
Run Code Online (Sandbox Code Playgroud)
包装体:
SQL> create or replace package body stu_package
2 as
3 procedure select_student(id number)
4 is
5 name varchar2(20);
6 begin
7 select sname into name from students where sid=id;
8 dbms_output.put_line(name);
9 end select_student; --> remove a space
10 end stu_package;
11 /
Package body created.
Run Code Online (Sandbox Code Playgroud)
测试:
SQL> set serveroutput on
SQL> exec stu_package.select_student(1);
LF
PL/SQL procedure successfully completed.
SQL>
Run Code Online (Sandbox Code Playgroud)
因此,尽管您说一切都很好,但列名似乎不是sid:
SQL> alter table students rename column sid to id;
Table altered.
SQL> create or replace package body stu_package
2 as
3 procedure select_student(id number)
4 is
5 name varchar2(20);
6 begin
7 select sname into name from students where sid=id;
8 dbms_output.put_line(name);
9 end select_student;
10 end stu_package;
11 /
Warning: Package Body created with compilation errors.
SQL> show err
Errors for PACKAGE BODY STU_PACKAGE:
LINE/COL ERROR
-------- --------------------------------------------------------------
7/5 PL/SQL: SQL Statement ignored
7/48 PL/SQL: ORA-00904: "SID": invalid identifier
SQL>
Run Code Online (Sandbox Code Playgroud)
或者,也许您在创建表时将其名称括在双引号中(如果是,请不要这样做!):
SQL> alter table students rename column id to "sid";
Table altered.
SQL> select * From students;
sid SNAME
---------- ----------
1 LF
SQL> create or replace package body stu_package
2 as
3 procedure select_student(id number)
4 is
5 name varchar2(20);
6 begin
7 select sname into name from students where sid=id;
8 dbms_output.put_line(name);
9 end select_student;
10 end stu_package;
11 /
Warning: Package Body created with compilation errors.
SQL> show err
Errors for PACKAGE BODY STU_PACKAGE:
LINE/COL ERROR
-------- --------------------------------------------------------------
7/5 PL/SQL: SQL Statement ignored
7/48 PL/SQL: ORA-00904: "SID": invalid identifier
SQL>
Run Code Online (Sandbox Code Playgroud)
因此,如果您确实使用了双引号,则必须一直这样做:
SQL> create or replace package body stu_package
2 as
3 procedure select_student(id number)
4 is
5 name varchar2(20);
6 begin
7 select sname into name from students where "sid"=id; --> here
8 dbms_output.put_line(name);
9 end select_student;
10 end stu_package;
11 /
Package body created.
SQL>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29 次 |
| 最近记录: |