Stored procedures 用于测试过程的PL/SQL匿名块

Stored procedures 用于测试过程的PL/SQL匿名块,stored-procedures,plsql,Stored Procedures,Plsql,pL/SQL过程 这是将术语、行号、组件名称、学生id、分数作为输入并处理学生分数的过程的代码 如果没有例外,程序应将分数添加到分数表中 代码 匿名块 下面是匿名块测试上述过程的代码 我无法获得正确的结果。请帮助我获取代码 ACCEPT prompt 'pterm','plineno','pcompname','psid','ppoints' DECLARE pterm scores.Term%type; plineno scores.Lineno%type; pcompname sco

pL/SQL过程

这是将术语、行号、组件名称、学生id、分数作为输入并处理学生分数的过程的代码

如果没有例外,程序应将分数添加到分数表中

代码 匿名块 下面是匿名块测试上述过程的代码

我无法获得正确的结果。请帮助我获取代码

ACCEPT   prompt 'pterm','plineno','pcompname','psid','ppoints'

DECLARE  pterm scores.Term%type;
plineno scores.Lineno%type;
pcompname scores.Compname%type;
psid scores.sid%type;
ppoints scores.points%type;

BEGIN
score_details(pterm,plineno,pcompname,psid,ppoints);

END

我将假设您故意遗漏了存储过程的大部分内容,因为它将一些值从表中提取到一些局部变量中,然后对这些值不做任何处理

我猜您可能想知道为什么在
ACCEPT
行中输入的值没有进入存储过程调用

ACCEPT
是一个SQL*Plus语句,可用于设置替换变量。以下示例创建名为
color
的替换变量并显示结果。黄色的
行是我输入的:

SQL> ACCEPT &colour Yellow SQL> PROMPT Your favourite colour is &colour Your favourite colour is Yellow
谢谢你的回答。我明白你的意思。我运行了代码并得到了错误(31,8):PLS-00103:在期望以下情况之一时遇到了符号“PTERM”:=。(@%;。我在过程下面写了匿名块。我是否应该在过程和匿名块之间写END;?您的存储过程确实缺少底部的
END;
。您还需要添加一行,其中只包含
/
。SQL*Plus不够聪明,无法使用k现在,当一个存储过程结束时,它需要一行只包含
/
,让它知道当前过程已经结束。 SQL> ACCEPT &colour Yellow SQL> PROMPT Your favourite colour is &colour Your favourite colour is Yellow SQL> ACCEPT colour PROMPT 'Enter a colour > ' Enter a colour > Yellow SQL> select '&colour' from dual; old 1: select '&colour' from dual new 1: select 'Yellow' from dual 'YELLO ------ Yellow
ACCEPT pterm PROMPT 'Enter a term > '
ACCEPT plineno PROMPT 'Enter a line number > '
-- and similarly for the others.

DECLARE
    pterm scores.Term%type := '&pterm';
    plineno scores.Lineno%type := '&plineno';
    pcompname scores.Compname%type := '&pcompname';
    psid scores.sid%type := '&psid';
    ppoints scores.points%type := '&ppoints';
BEGIN
    score_details(pterm,plineno,pcompname,psid,ppoints);
END;