Oracle 错误PLS-00428:此SELECT语句中应包含INTO子句

Oracle 错误PLS-00428:此SELECT语句中应包含INTO子句,oracle,plsql,oracle-sqldeveloper,Oracle,Plsql,Oracle Sqldeveloper,我只想在declare过程之间显示USU_USERS表,但当我尝试编译时,它会显示这个错误 DECLARE ID_UNICO VARCHAR(200) := 'H3LP'; BEGIN DECLARE VID VARCHAR2(200); VID_USER VARCHAR2(200); BEGIN VID := ID_UNICO; VID_USER := 'SOPORTE';

我只想在declare过程之间显示USU_USERS表,但当我尝试编译时,它会显示这个错误

 DECLARE

 ID_UNICO VARCHAR(200) := 'H3LP';

 BEGIN
    
   DECLARE
          VID VARCHAR2(200);
          VID_USER VARCHAR2(200);
   BEGIN
          VID := ID_UNICO;
          VID_USER := 'SOPORTE';
 
          USR_SP_USERS.CREATE(
            VID => VID,
            VID_USER => VID_USER,
          );
   END;
        
    SELECT * from USU_USERS;

 END;
注意:此表有多行


PL/SQL只是一种服务器端语言,因此无法在任何地方显示SELECT语句的结果。SELECT语句需要将它从数据库检索到的值放入一个或多个变量中。让我们试着给你一些有用的东西:

DECLARE
  strID_UNICO   VARCHAR(200) := 'H3LP';
  strVID        VARCHAR2(200);
  strVID_USER   VARCHAR2(200);

  rowUSU_USERS  USU_USERS%ROWTYPE;
BEGIN
  strVID := strID_UNICO;
  strVID_USER := 'SOPORTE';

  USR_SP_USERS.CREATE(VID      => strVID,
                      VID_USER => strVID_USER);
        
  SELECT *
    INTO rowUSU_USERS
    FROM USU_USERS;
END;

请注意,如果表USU_USERS中有多行,则此代码将失败。但是,假设USU用户中只有一行,那么您可以使用DBMS\u OUTPUT.PUT\u LINE来输出rowUSU用户中的各个字段。

根据PL/SQL的工作方式,没有地方可以输出。如果希望在控制台上输出,并将其作为脚本执行,请删除BEGIN和END;。对不起,我更新了帖子。如果必须使用PL/SQL将输出打印到控制台,则需要显示其位于DECLARE过程中的输出上的表,然后查看及其答案。你也可以看看。这三个查询保证会产生c0或更多行。这是一个例子——不幸的是,这是一个非常糟糕的例子。您的示例应该演示在PL/SQL中执行某些操作的必要性,例如复杂的处理等。在任何情况下,几乎可以确定您将需要在PL/SQL块之外执行SQL语句,因此,该块不会是匿名的。最常见的方法是创建一个表函数,一个返回某种类型的表的函数;然后,在标准SQL语句中,您可以从该函数中选择,实际上是从其表输出中选择。你的问题,一如所问,毫无意义。