oracle sql Синтаксис вывода функции - PullRequest
0 голосов
/ 25 февраля 2020

У меня такая проблема с выходными данными, но имя_портфеля равно нулю, но я не думаю, что это важно, я не знаю, что такое синтаксис, и передаю два входных параметра: P_Portfolio_number и P_Stock_Code


begin 
select Investor_Number,portfolio_description
into V_Investor_Number,V_portfolio_DES
from portfolio 
where P_Portfolio_number=Portfolio_Number;

select First_Name,Last_Name 
into V_firstname,V_Lastname 
from investor 
where Investor_Number=V_Investor_Number;

select Stock_name
into V_stock_name
from stock
where stock_code = P_Stock_Code;

select count(stock_code)
into V_count 
from transaction
where P_Stock_Code = stock_code and 
P_Portfolio_number=Portfolio_Number;

if V_count = 0 then
V_output := V_output || V_firstname||' '|| V_Lastname ||'does not exist ' || V_stock_name;
ELSIF  


that one work with the output 

почему-то нижеприведенное не работает

begin 
select Investor_Number,portfolio_description
into V_Investor_Number,V_portfolio_DES
from portfolio 
where P_Portfolio_number=Portfolio_Number;

select First_Name,Last_Name 
into V_firstname,V_Lastname 
from investor 
where Investor_Number=V_Investor_Number;

select Stock_name
into V_stock_name
from stock
where stock_code = P_Stock_Code;

select count(stock_code)
into V_count 
from transaction
where P_Stock_Code = stock_code and 
P_Portfolio_number=Portfolio_Number;

if V_count = 0 then
V_output := V_output || V_firstname||' '|| V_Lastname ||'does not exist ' || V_stock_name||'in the '||V_portfolio_DES;
ELSIF 

, когда я добавляю V_portfolio_DES в конце, вызовет исключение для других

1 Ответ

0 голосов
/ 25 февраля 2020

вызовет исключение для других

То есть, я полагаю, WHEN OTHERS вы использовали. Обычно это большая ошибка. Не поднимайте это, если вы не обращаетесь с этим должным образом. Вы бы предпочли Oracle показать, что происходит. С вашим «исключением» вы ничего не обработали, но успешно скрыли причину ошибки.

В любом случае: говоря, что - когда вы добавили V_PORTFOLIO_DES в V_OUTPUT переменную, мне повезло, что V_OUTPUT объявлен как VARCHAR2, но слишком мало . Например: если это

declare v_output varchar2(20);

и первый фрагмент кода работает нормально, потому что длина переменной меньше 20 символов, но - после объединения v_portfolio_des длина превышает 20 и вы получил ошибку.

Поэтому увеличьте размер переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...