2015-11-17 3 views
0

В настоящее время я пытаюсь выполнить хранимую процедуру в Oracle PL SQL. Я продолжаю работать с той же ошибкой для ниже с исполнением.Выполнение хранимой процедуры - Oracle PL SQL

Я пробовал оба исполнения с той же ошибкой SET SERVEROUTPUT ON; EXEC get_phone (200,00 500,00);

ИЛИ

SET SERVEROUTPUT ON; 
    DECLARE 
    c_minprice products.price%type; 
    c_maxprice products.price%type; 
    BEGIN 
    c_minprice := get_phone(200); 
    c_maxprice := get_phone(500); 
    END; 


ERROR from executing the above: 
c_minprice := get_phone(200); 
       * 

ERROR at line 5: 
ORA-06550: line 5, column 15: 
PLS-00306: wrong number or types of arguments in call to 'GET_PHONE' 
ORA-06550: line 5, column 1: 
PL/SQL: Statement ignored 
ORA-06550: line 6, column 15: 
PLS-00306: wrong number or types of arguments in call to 'GET_PHONE' 
ORA-06550: line 6, column 1: 
PL/SQL: Statement ignored 

    ****Sample Snip-its form my code: 

    CREATE OR REPLACE PROCEDURE get_phone 
    (
    c_minprice IN products.price%type, 
    c_maxprice IN products.price%type, 
    i_result OUT VARCHAR2 
) AS 

--Checking if starting price range is valid or not 
IF c_minprice IS NULL THEN 
    i_result := 'Starting price range should be valid and cannot be empty'; 
    RAISE V_MINPRICE; -- Raising exception if starting price is null 
END IF; 

--Checking if end price range is valid or not 
IF c_maxprice IS NULL THEN 
    i_result := 'End price range should be valid and cannot be empty'; 
    RAISE V_MAXPRICE; -- Raising exception if end price is null 
END IF; 

ответ

0

get_phone ожидает 3 аргумента, c_minprice, c_maxprice и i_result. Вы передаете только один номер. Передайте остальные аргументы.

+0

Вот где я пытаюсь столкнуться с проблемой --- Я добавил минимальную цену и максимальную цену. Почему мне нужно добавить результат, когда я хочу, чтобы он подбирал продукты между минимальным и максимальным ценовым диапазоном. Например, я использую I_result для ниже: - Проверка правильности начального ценового диапазона IF c_minprice IS NULL THEN i_result: = 'Начальный ценовой диапазон должен быть действительным и не может быть пустым'; RAISE V_MINPRICE; - Исключение, если стартовая цена равна нулю END IF; – LivinLife

+0

SET SERVEROUTPUT ON; DECLARE c_minprice products.price% type; c_maxprice products.price% type; BEGIN c_minprice: = get_phone (200); c_maxprice: = get_phone (500); END; – LivinLife

+1

Обновить исходное сообщение с дополнительной, полной информацией. Раздел комментариев не является местом для кода из-за отсутствия форматирования. –

1

Ваша процедура требует трех параметров, так что вы должны пройти в течение трех параметров

DECLARE 
    l_result varchar2(100); 
BEGIN 
    get_phone(200, 500, l_result); 
END; 
/

должен работать. Конечно, ваша процедура кажется довольно бессмысленной. И если целью является просто возвращение результата, вы действительно должны использовать функцию, а не процедуру с параметром out.

+0

Спасибо, Джастин. Это сработало ... Я согласен с тобой. Я могу изучить использование функции для этой проблемы. – LivinLife