PL/SQL 过程 - 值太多

Posted

技术标签:

【中文标题】PL/SQL 过程 - 值太多【英文标题】:PL/SQL procedure - too many values 【发布时间】:2012-01-13 15:10:06 【问题描述】:

我确信这很简单,但我对 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】:

如果您想选择 %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 个变量来选择这些值。

【讨论】:

以上是关于PL/SQL 过程 - 值太多的主要内容,如果未能解决你的问题,请参考以下文章

ORA-29270:从pl / sql过程调用webservice时,有太多打开的HTTP请求

PL/SQL 里,在TEST窗口调试,想停止了时候,不能停止,怎么回事

PL/SQL 过程块

Oracle Database-PL/SQL

PL/SQL 过程顺序

pl/sql编程基础