PLS-00302: должен быть объявлен компонент 'VARIABLE_SKU_ID' - PullRequest
1 голос
/ 23 марта 2019

Я пытаюсь сохранить результат моего запроса в переменной, чтобы я мог использовать его в другом запросе, но получаю ошибки

create procedure store_validated_sku_id
("variable_sku_id" VARCHAR2)
as
BEGIN

SELECT vsku.SKU_ID INTO  store_validated_sku_id.variable_sku_id 
FROM vs_sku_discont_details_test discontd,vsx_dcs_sku vsku,auto_ship_view bcc 
where discontd.sku_id = vsku.JDA_SKU_ID 
  and bcc.sku_id = vsku.SKU_ID AND vsku.web_eligible = 1 
  and vsku.discontinued =0 and bcc.auto_ship_eligible is null;

END store_validated_sku_id;

/

Получение следующих ошибок в логах компилятора:

Error(5,1): PL/SQL: SQL Statement ignored
Error(5,49): PLS-00302: component 'VARIABLE_SKU_ID' must be declared
Error(5,65): PL/SQL: ORA-00904: : invalid identifier

Ответы [ 3 ]

3 голосов
/ 23 марта 2019
  • Да, ваша главная проблема заключается в переносе переменных (variable_sku_id) вокруг с кавычками (независимо от того, двойные или одинарные, оба дают проблемы), ты должен от них избавиться
  • , но также необходимо преобразовать его в тип out или in out, поскольку in (по умолчанию) аргумент типа нельзя использовать в качестве цели назначения .
3 голосов
/ 23 марта 2019

Помещение variable_sku_id между двойными кавычками делает имя идентификатора чувствительным к регистру.

Удалите двойные кавычки, и все должно быть в порядке (я изменил ваш запрос на использование синтаксиса ANSI-92 - помещение всего в предложение FROM является устаревшим синтаксисом Oracle старого стиля и его следует избегать):

create procedure store_validated_sku_id
(variable_sku_id VARCHAR2)
as 
BEGIN

SELECT vsku.SKU_ID INTO  store_validated_sku_id.variable_sku_id 
FROM vs_sku_discont_details_test discontd
JOIN vsx_dcs_sku vsku 
  ON  discontd.sku_id = vsku.JDA_SKU_ID 
JOIN auto_ship_view bcc
  ON bcc.sku_id = vsku.SKU_ID 
 WHERE vsku.web_eligible = 1 
 AND vsku.discontinued = 0 
 AND bcc.auto_ship_eligible is null;

END store_validated_sku_id;
0 голосов
/ 23 марта 2019
CREATE OR REPLACE PROCEDURE store_validated_sku_id( variable_sku_id OUT VARCHAR2 ) IS    
BEGIN    
  SELECT vsku.SKU_ID
    INTO variable_sku_id      
    FROM vs_sku_discont_details_test discontd      
    JOIN vsx_dcs_sku vsku      
      ON discontd.sku_id = vsku.JDA_SKU_ID      
    JOIN auto_ship_view bcc      
      ON bcc.sku_id = vsku.SKU_ID      
   WHERE vsku.web_eligible = 1            
     AND vsku.discontinued = 0            
     AND bcc.auto_ship_eligible is null;    
END store_validated_sku_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...