Oracle 如何在函数中使用select语句?

Oracle 如何在函数中使用select语句?,oracle,Oracle,我试图构建一个从表中返回值的函数 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; 基本上,我输入一种货币

我试图构建一个从表中返回值的函数

    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>    <
错误(9,11):PLS-00103:在预期以下情况之一时遇到符号“SELECT”:((+case mod new not null)<

将结果
选择到一个局部变量中,然后返回:

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;

选择
将结果
放入一个局部变量,并返回:

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;

选择
将结果
放入一个局部变量,并返回:

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;

选择
将结果
放入一个局部变量,并返回:

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;

谢谢,但我收到了此错误。错误(8,1):PLS-00103:在预期以下情况之一时遇到符号“BEGIN”:=。(@%;非空范围默认字符符号“;”被替换为“BEGIN”以继续。抱歉,似乎我忘了一个分号。它正在工作吗?谢谢,但我收到了此错误。错误(8,1):PLS-00103:遇到符号“BEGIN”时,应出现以下情况之一::=。(@%;非空范围默认字符符号“;”被替换为“BEGIN”以继续。抱歉,似乎我忘记了分号。现在可以使用了吗?谢谢,但我收到此错误。错误(8,1):PLS-00103:遇到符号“BEGIN”当需要下列之一时::=。(@%;非空范围默认字符符号“;”被替换为“开始”以继续。抱歉,似乎我忘记了一个分号。现在可以使用了吗?谢谢,但我收到了此错误。错误(8,1):PLS-00103:在需要下列之一时遇到了符号“开始”:。(@%;非空范围默认字符符号“;”已替换为“开始”以继续。抱歉,我好像忘记了分号。现在可以使用了吗?