2013-11-25 3 views
0

Я пытаюсь создать функцию, которая возвращает значение из таблицыКак использовать оператор select внутри функции?

create or replace 
FUNCTION TO_LOCAL_CURRENCY 
(
    CURR IN VARCHAR2 
, VAL IN VARCHAR2 
) RETURN NUMBER AS 
BEGIN 

    RETURN (select EXRATE 
    from exchangerates 
    where CURR = 'EUR') * VAL; 
END TO_LOCAL_CURRENCY; 

В основном я кормлю в валюте и стоимости, и он ищет курс из таблицы exchangerates и умножает EXRATE по VAL и возвращает результат.

Я получаю следующую ошибку

Error(9,11): PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:  (- + case mod new not null <an identifier> < 

ответ

3

SELECT результат INTO локальная переменная, и вернуть, что:

create or replace 
FUNCTION TO_LOCAL_CURRENCY 
(
    CURR IN VARCHAR2 
, VAL IN VARCHAR2 
) RETURN NUMBER AS 
    EXCHANGE_RATE NUMBER; 
BEGIN 

    select EXRATE 
    into EXCHANGE_RATE 
    from exchangerates 
    where CURR = 'EUR'; 

    return EXCHANGE_RATE * VAL; 

END TO_LOCAL_CURRENCY; 
+0

Спасибо, но я получаю эту ошибку. Ошибка (8,1): PLS-00103: встречается символ «BEGIN», если вы ожидаете одно из следующего:: =. (@%; not character default default Символ ";" был заменен на "BEGIN" для продолжения. – totalitarian

+0

Извините, кажется, я забыл точку с запятой. Теперь она работает? – CompuChip

+0

Perfect! – totalitarian

Смежные вопросы