PL/SQL过程 - 值太多

Joe*_*e C 2 oracle plsql stored-procedures

我确信这很简单,但我是PL/SQL的新手,这让我感到困惑.

我写了一个简单的存储过程来返回一些关于客户的值.蝙蝠,%rowtype它们不会作为保留关键字出现,但编译器没有将这些标记为错误.

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

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;
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 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;
Run Code Online (Sandbox Code Playgroud)

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