[英]Error: Cant create procedure with select in PL/SQL
我正在一个包中创建一个过程,我想做一个简单的选择,但我收到这个错误。
create or replace PACKAGE PK_MAC AS
/* TODO enter package declarations (types, exceptions, methods etc) here */
PROCEDURE PR_PRUEBAS (
IDNUM NUMBER := 0,
NOMBRES VARCHAR2 := 'Usuario',
FECHANACIMIENTO DATE := SYSDATE,
ARCHIVOS CLOB := ''
)
IS
BEGIN
SELECT * FROM MAC;
END;
END;
错误:
错误(6,3):PLS-00103:在期望以下之一时遇到符号“BEGIN”:语言“
包装由其规格和主体组成。 例如:
SQL> create or replace package pk_mac as
2 procedure pr_pruebas (p_idnum in number);
3 end;
4 /
Package created.
SQL> create or replace package body pk_mac as
2 procedure pr_pruebas (p_idnum in number)
3 is
4 l_ename emp.ename%type;
5 begin
6 select ename
7 into l_ename
8 from emp
9 where empno = p_idnum;
10
11 dbms_output.put_line(l_ename);
12 end;
13 end;
14 /
Package body created.
测试:
SQL> set serveroutput on
SQL>
SQL> exec pk_mac.pr_pruebas(7654);
MARTIN
PL/SQL procedure successfully completed.
SQL>
或者,就您而言:
SQL> create or replace PACKAGE PK_MAC AS
2 PROCEDURE PR_PRUEBAS
3 (IDNUM NUMBER := 0,
4 NOMBRES VARCHAR2 := 'Usuario',
5 FECHANACIMIENTO DATE := SYSDATE,
6 ARCHIVOS CLOB := '');
7 end;
8 /
Package created.
SQL>
SQL> create or replace PACKAGE body PK_MAC AS
2 PROCEDURE PR_PRUEBAS
3 (IDNUM NUMBER := 0,
4 NOMBRES VARCHAR2 := 'Usuario',
5 FECHANACIMIENTO DATE := SYSDATE,
6 ARCHIVOS CLOB := '')
7 is
8 begin
9 null;
10 end;
11 end;
12 /
Package body created.
SQL>
请注意 - 当您在 PL/SQL 中使用select
语句时 - 您必须将结果into
某些内容(例如变量,就像我在我的示例中所做的那样)。 你不能只是SELECT * FROM MAC
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.