Процедура PL / SQL - слишком много значений - PullRequest
2 голосов
/ 13 января 2012

Я уверен, что это что-то простое, но я действительно новичок в 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;

1 Ответ

5 голосов
/ 13 января 2012

Если вы хотите выбрать запись% 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 переменные для выбора этих значений.

...