Sql 我想创建一个打印多个值的过程

Sql 我想创建一个打印多个值的过程,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我想创建一个打印多个值的过程,但我不知道如何创建。即使我在过程中声明Select语句,它也会出错 这是我的桌子 学生(身份证学生、身份证教员、姓名、分数) 我的练习是创建一个程序,显示所有分数大于7.5的学生的名字 我的代码在创建过程时出错 set serveroutput on; CREATE OR REPLACE PROCEDURE getStudent ( s_name OUT DBUSER.USERNAME%TYPE ) IS BEGIN SELECT name I

我想创建一个打印多个值的过程,但我不知道如何创建。即使我在过程中声明Select语句,它也会出错

这是我的桌子 学生(身份证学生、身份证教员、姓名、分数)

我的练习是创建一个程序,显示所有分数大于7.5的学生的名字

我的代码在创建过程时出错

set serveroutput on;
CREATE OR REPLACE PROCEDURE getStudent
 (
  s_name OUT DBUSER.USERNAME%TYPE
 )

IS

BEGIN

  SELECT name
  INTO s_name,
  from Student WHERE mark > 7.5;

  dbms_output.put_line(s_name)

END;
/

INTO
可以为变量指定一个值。您的查询必须提供超过1行。还有一个语法错误

您可以使用以下代码,该代码将使用带有最高标记的
行编号()
返回单个记录。如果要返回所有分数大于7.5的学生,则out参数应为
cursor
或带有逗号分隔值的
varchar2

set serveroutput on;
CREATE OR REPLACE PROCEDURE getStudent
 (
  s_name OUT DBUSER.USERNAME%TYPE
 )

IS

BEGIN

  SELECT NAME INTO S_NAME FROM   
  (SELECT name, ROW_NUMBER() OVER (order by mark desc) AS RN
  from Student WHERE mark > 7.5);

  dbms_output.put_line(s_name);

exception WHEN NO_DATA_FOUND THEN
s_name := NULL;

END;
/

干杯

使用下表

create table student ( id_Student varchar2(100) , id_faculty varchar2(100), name varchar2(100), Mark varchar2(10) );
使用以下数据

REM INSERTING into STUDENT
SET DEFINE OFF;
Insert into STUDENT (ID_STUDENT,ID_FACULTY,NAME,MARK) values ('1','2','jon smith','8');
Insert into STUDENT (ID_STUDENT,ID_FACULTY,NAME,MARK) values ('2','3','lucy smith','10');
Insert into STUDENT (ID_STUDENT,ID_FACULTY,NAME,MARK) values ('4','5','james smith','8');
Insert into STUDENT (ID_STUDENT,ID_FACULTY,NAME,MARK) values ('6','7','al bundy','6');
Insert into STUDENT (ID_STUDENT,ID_FACULTY,NAME,MARK) values ('8','9','george jackson','10');
Insert into STUDENT (ID_STUDENT,ID_FACULTY,NAME,MARK) values ('10','11','penelope smith','9');
程序

create or replace procedure get_student as 
begin

FOR rec IN (SELECT name
  from Student WHERE mark > 7.5) 
   LOOP 
      DBMS_OUTPUT.put_line (rec.name); 
   END LOOP; 

end get_student;
简单地执行程序

BEGIN
  GET_STUDENT();
--rollback; 
END;

您眼前的问题可能是
结尾处的逗号进入s_name
。指定您收到的实际错误是很有帮助的。非常感谢您的回复,但是我现在如何尝试执行它呢?它应该在pl/sql块中吗?