PL / SQL过程 - 值太多

时间:2012-01-13 15:10:07

标签: oracle stored-procedures plsql

我确信这很简单,但我是PL / SQL的新手,这让我陷入困境。

我编写了一个简单的存储过程来返回有关客户的一些值。马上,%rowtype不是保留关键字,但编译器没有将这些标记为错误。

但是,忽略将FROM demo_customers行标记为too many values的整个SQL语句。即使我尝试将其缩小为仅选择一列,它仍然会给我同样的错误。

create or replace
PROCEDURE GETCUSTOMER 
(
  arg_customerID demo_customers.customer_id%type,
  returnRec OUT demo_customers%rowtype
) 
AS
BEGIN
  SELECT  customer_id, cust_first_name, cust_last_name, cust_email
  INTO    returnRec
  FROM    demo_customers
  WHERE   customer_id = arg_customerID ;

END GETCUSTOMER;

1 个答案:

答案 0 :(得分:5)

如果要选择%ROWTYPE记录,则需要执行SELECT *而不是选择单个列

create or replace
PROCEDURE GETCUSTOMER 
(
  arg_customerID demo_customers.customer_id%type,
  returnRec OUT demo_customers%rowtype
) 
AS
BEGIN
  SELECT  *
  INTO    returnRec
  FROM    demo_customers
  WHERE   customer_id = arg_customerID ;

END GETCUSTOMER;

如果明确选择4列,Oracle希望您有4个变量来选择这些值。