Sql 我想创建一个打印多个值的过程
我想创建一个打印多个值的过程,但我不知道如何创建。即使我在过程中声明Select语句,它也会出错 这是我的桌子 学生(身份证学生、身份证教员、姓名、分数) 我的练习是创建一个程序,显示所有分数大于7.5的学生的名字 我的代码在创建过程时出错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
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块中吗?