首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输出有问题。精确提取少于返回的行数时出错?

输出有问题。精确提取少于返回的行数时出错?
EN

Stack Overflow用户
提问于 2013-04-18 02:53:47
回答 1查看 3.8K关注 0票数 0

我是PL/SQL的新手,在输出这段代码时遇到了问题。我有一个填充的employee表,其中包含员工姓名、工作、工资、id等。我需要的是让我的输出显示如下:

代码语言:javascript
运行
复制
Employee Name:       Johnson
Job:                 Service Writer
Total Pay:           $32,000

我一直收到错误: exact fetch返回的行数多于请求的行数

代码语言:javascript
运行
复制
ACCEPT p_1 PROMPT 'Please enter the Employee ID:'

DECLARE
   v_eid     employee.employee_id%TYPE := &p_1;
   v_name    employee.employee_name%TYPE;
   v_job     employee.job%TYPE;
   v_pay     employee.salary%TYPE;
BEGIN
   SELECT employee_name, job, salary
   INTO v_name, v_job, v_pay
   FROM employee;
   DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name);
   DBMS_OUTPUT.PUT_LINE('Job: ' || v_job);
   DBMS_OUTPUT.PUT_LINE('Total Pay: ' || v_pay);
END;

我想我快到了?任何帮助都是最好的!

EN

回答 1

Stack Overflow用户

发布于 2013-04-18 03:16:05

您的SELECT语句返回多个行,这意味着SELECT INTO语句将失败,并出现"exact fetch returns more than requested number of rows“错误。

尝试添加WHERE子句,这意味着SELECT语句将只返回一行。我猜从你的代码来看,你想做这样的事情:

代码语言:javascript
运行
复制
ACCEPT p_1 PROMPT 'Please enter the Employee ID:'

DECLARE
   v_eid     employee.employee_id%TYPE := &p_1;
   v_name    employee.employee_name%TYPE;
   v_job     employee.job%TYPE;
   v_pay     employee.salary%TYPE;
BEGIN
   SELECT employee_name, job, salary
   INTO v_name, v_job, v_pay
   FROM employee
   WHERE employee_id = v_eid;

   DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name);
   DBMS_OUTPUT.PUT_LINE('Job: ' || v_job);
   DBMS_OUTPUT.PUT_LINE('Total Pay: ' || v_pay);
END;

有关该错误的更多信息,请查看http://www.techonthenet.com/oracle/errors/ora01422.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16067879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档