我确信这很简单,但我是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;
答案 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个变量来选择这些值。